public void createWorkspaceWithTags(
      String workspaceName, String description, String username, String origin, String tags) {
    Assert.notNull(workspaceName);
    Assert.notNull(username);
    if (checkNameAvailability(workspaceName, username)) {
      Workspace ws = new Workspace();
      ws.setDownloads(0);
      ws.setDescription(description);
      ws.setLastMod(Calendar.getInstance().getTime());
      ws.setLaunches(0);
      ws.setWsVersion(1);
      ws.setName(workspaceName);
      UserAccount ua = uar.findByUsername(username);
      Researcher rese = researcherRepository.findByUserAccountId(ua.getId());
      ws.setOwner(rese);

      String[] array = tags.split("\\s+");
      Collection<Tag> wsTags = new ArrayList<>();

      for (String a : array) {
        if (a.length() > 1) {
          if (tagRepository.findByName(a) != null) wsTags.add(tagRepository.findByName(a));
          else {
            Tag newTag = new Tag();
            newTag.setName(a);
            wsTags.add(tagRepository.save(newTag));
          }
        }
      }
      ws.setWorkspaceTags(wsTags);

      workspaceRepository.saveAndFlush(ws);
    }
  }
  public void saveOrUpdate(String workspaceJSON) {

    boolean success = true;
    Assert.notNull(workspaceJSON);

    Workspace ws = new Workspace();
    ObjectMapper mapper = new ObjectMapper();

    try {

      ws = mapper.readValue(workspaceJSON, Workspace.class);
      ws.setLastMod(Calendar.getInstance().getTime());
      System.out.println(ws);

    } catch (JsonGenerationException e) {
      success = false;
    } catch (JsonMappingException e) {
      success = false;
    } catch (IOException e) {
      success = false;
    }

    if (success) {
      workspaceRepository.saveAndFlush(ws);
    }
  }
  public void updateTime(String workspaceName, String username) {
    try {
      Workspace ws = findByNameAndOwner(workspaceName, username);
      ws.setLastMod(Calendar.getInstance().getTime());
      workspaceRepository.saveAndFlush(ws);

    } catch (Exception e) {
      Logger.getLogger(WorkspaceService.class.getName())
          .log(Level.SEVERE, "Problems while updating time in workspace {0}", workspaceName);
    }
  }
  public void updateDemo(String demoWorkspaceName, String username) {

    Assert.notNull(demoWorkspaceName);
    Assert.notNull(username);

    Workspace demoWS = workspaceRepository.findByName(demoWorkspaceName, DEMO_MASTER);
    Workspace originWS = demoWS.getOrigin();

    demoWS.setLastMod(Calendar.getInstance().getTime());
    demoWS.setDescription(originWS.getDescription());
    updateVersion(originWS);
    demoWS.setWsVersion(originWS.getWsVersion());

    workspaceRepository.saveAndFlush(demoWS);
  }
  public void createWorkspace(String workspaceName, String username, String origin) {
    Assert.notNull(workspaceName);
    Assert.notNull(username);
    if (checkNameAvailability(workspaceName, username)) {
      Workspace ws = new Workspace();
      ws.setDownloads(0);
      ws.setDescription("");
      ws.setLastMod(Calendar.getInstance().getTime());
      ws.setLaunches(0);
      ws.setWsVersion(1);
      ws.setName(workspaceName);
      UserAccount ua = uar.findByUsername(username);
      Researcher rese = researcherRepository.findByUserAccountId(ua.getId());
      ws.setOwner(rese);
      if (origin != null) {
        ws.setOrigin(workspaceRepository.findById(Integer.valueOf(origin)));
        ws.setDescription(workspaceRepository.findById(Integer.valueOf(origin)).getDescription());

        if (username.startsWith("demo")) updateLaunches(workspaceName, DEMO_MASTER);
      }
      workspaceRepository.saveAndFlush(ws);
    }
  }
 public void updateTime(Workspace w) {
   w.setLastMod(Calendar.getInstance().getTime());
   workspaceRepository.saveAndFlush(w);
 }