Beispiel #1
0
  public long updatePart(String userId, long partId, PartData part) {
    Entry existing = dao.get(partId);
    authorization.expectWrite(userId, existing);

    Entry entry = InfoToModelFactory.updateEntryField(part, existing);
    entry.getLinkedEntries().clear();
    if (part.getLinkedParts() != null && part.getLinkedParts().size() > 0) {
      for (PartData data : part.getLinkedParts()) {
        Entry linked = dao.getByPartNumber(data.getPartId());

        // check permissions on link
        if (!authorization.canRead(userId, linked)) {
          continue;
        }

        if (!canLink(entry, linked)) continue;

        entry.getLinkedEntries().add(linked);
      }
    }

    entry.setModificationTime(Calendar.getInstance().getTime());
    if (entry.getVisibility() == Visibility.DRAFT.getValue()) {
      List<EntryField> invalidFields = EntryUtil.validates(part);
      if (invalidFields.isEmpty()) entry.setVisibility(Visibility.OK.getValue());
    }
    entry = dao.update(entry);

    // check pi email
    String piEmail = entry.getPrincipalInvestigatorEmail();
    if (StringUtils.isNotEmpty(piEmail)) {
      Account pi = DAOFactory.getAccountDAO().getByEmail(piEmail);
      if (pi != null) {
        // add write permission for the PI (method also checks to see if permission already exists)
        AccessPermission accessPermission = new AccessPermission();
        accessPermission.setArticle(AccessPermission.Article.ACCOUNT);
        accessPermission.setArticleId(pi.getId());
        accessPermission.setType(AccessPermission.Type.WRITE_ENTRY);
        accessPermission.setTypeId(entry.getId());
        permissionsController.addPermission(userId, accessPermission);
      }
    }

    return entry.getId();
  }
Beispiel #2
0
  private static Entry setCommon(Entry entry, PartData info) {
    if (entry == null || info == null) return null;

    if (info.getName() != null) entry.setName(info.getName());

    if (info.getSelectionMarkers() != null) {
      Set<SelectionMarker> markers = getSelectionMarkers(info.getSelectionMarkers(), entry);
      entry.setSelectionMarkers(markers);
    }

    if (info.getReferences() != null) entry.setReferences(info.getReferences());

    if (StringUtils.isBlank(entry.getPartNumber())) entry.setPartNumber(info.getPartId());

    Date currentTime = new Date();
    if (entry.getCreationTime() == null) entry.setCreationTime(currentTime);

    entry.setModificationTime(currentTime);

    if (info.getOwnerEmail() != null) {
      entry.setOwnerEmail(info.getOwnerEmail());
    }

    if (info.getOwner() != null) entry.setOwner(info.getOwner());

    if (info.getCreatorEmail() != null) {
      entry.setCreatorEmail(info.getCreatorEmail());
    }

    if (info.getCreator() != null) entry.setCreator(info.getCreator());

    if (info.getStatus() == null) {
      if (StringUtils.isBlank(entry.getStatus())) entry.setStatus("");
    } else entry.setStatus(info.getStatus());

    if (info.getAlias() != null) entry.setAlias(info.getAlias());

    if (info.getBioSafetyLevel() == null) {
      if (entry.getBioSafetyLevel() == null) entry.setBioSafetyLevel(0);
    } else entry.setBioSafetyLevel(info.getBioSafetyLevel());

    if (info.getShortDescription() != null) entry.setShortDescription(info.getShortDescription());
    if (info.getLongDescription() != null) entry.setLongDescription(info.getLongDescription());
    if (info.getIntellectualProperty() != null)
      entry.setIntellectualProperty(info.getIntellectualProperty());

    Set<Link> links = getLinks(info.getLinks(), entry);
    entry.setLinks(links);

    Visibility visibility = info.getVisibility();
    if (visibility != null) entry.setVisibility(visibility.getValue());

    // checking for null instead of blank since it could be cleared
    if (info.getFundingSource() != null) entry.setFundingSource(info.getFundingSource());
    if (info.getPrincipalInvestigator() != null)
      entry.setPrincipalInvestigator(info.getPrincipalInvestigator());
    if (info.getPrincipalInvestigatorEmail() != null)
      entry.setPrincipalInvestigatorEmail(info.getPrincipalInvestigatorEmail());

    if (info.getKeywords() != null) entry.setKeywords(info.getKeywords());

    // parameters
    List<Parameter> parameters = getParameters(info.getCustomFields(), entry);
    entry.setParameters(parameters);
    return entry;
  }