public VDC find(Object pk) {
   VDC vdc = (VDC) em.find(VDC.class, pk);
   VDCCollection rootCollection = vdc.getRootCollection();
   rootCollection.getId();
   Collection<VDCCollection> subcollections = rootCollection.getSubCollections();
   traverseCollections(subcollections);
   return vdc;
 }
  public Map getVdcTemplatesMap(Long vdcId) {
    VDC vdc = em.find(VDC.class, vdcId);
    Map templatesMap = new LinkedHashMap();
    Template defaultNetworkTemplate = vdcNetworkService.find().getDefaultTemplate();
    templatesMap.put(defaultNetworkTemplate.getName(), defaultNetworkTemplate.getId());
    Collection<Template> vdcTemplates = vdc.getTemplates();
    if (vdcTemplates != null) {
      for (Template template : vdcTemplates) {
        templatesMap.put(template.getName(), template.getId());
      }
    }

    return templatesMap;
  }
 /* updateScholarDVs
  *
  * This is not currently used. It was
  * developed for 16a, but there is an
  * issue with casting and the java
  * persistence layer.
  * Leaving it here as a placeholder.
  *
  *
  * @author wbossons
  */
 public VDC updateScholarDVs(VDC scholarDV) {
   //
   String updateString =
       "update vdc set firstname = '"
           + scholarDV.getFirstName()
           + "', lastname='"
           + scholarDV.getLastName()
           + "', name='"
           + scholarDV.getName()
           + "', alias='"
           + scholarDV.getAlias()
           + "', affiliation='"
           + scholarDV.getAffiliation()
           + "', dtype = 'Scholar' where id = "
           + scholarDV.getId();
   Connection conn = null;
   PreparedStatement updateStatement = null;
   try {
     conn = dvnDatasource.getConnection();
     updateStatement = conn.prepareStatement(updateString);
     int rowcount = updateStatement.executeUpdate();
   } catch (java.sql.SQLException e) {
     // Do nothing, just return null.
   }
   em.flush();
   VDC scholardataverse = em.find(VDC.class, scholarDV.getId());
   return scholardataverse;
   //
 }
Example #4
0
  /**
   * This method implements the interface defined in DefinitionHandler to save definition to
   * database backend.
   *
   * @param d is the Definition that is ready to be stored.
   * @return true, if new version was stored and database modified, false, if the definition was
   *     rejected for any reason.
   */
  public boolean store(Definition d) {
    boolean result = false;
    VDC vdc = (VDC) m_dbschema;

    // NEW: remember all DVs we came across
    if (m_derivations != null && d instanceof Derivation) m_derivations.add(d.shortID());

    try {
      if (m_rejects == null) {
        // rely on saveDefinition to do "the right thing"
        result = vdc.saveDefinition(d, m_overwrite);
      } else {
        // Is the Definition already in the database?
        if (vdc.containsDefinition(d)) {
          if (m_overwrite) {
            // this is time-consuming and ineffective
            Definition old =
                vdc.loadDefinition(d.getNamespace(), d.getName(), d.getVersion(), d.getType());
            old.toXML(m_rejects, "  ");
            result = vdc.saveDefinition(d, true);
          } else {
            // skip, if not forced to overwrite, but save rejects
            d.toXML(m_rejects, "  ");
          }
        } else {
          // not found, insert unconditionally
          result = vdc.saveDefinition(d, true);
        }
      }
    } catch (SQLException sql) {
      // database problems
      for (int i = 0; sql != null; ++i) {
        m_logger.log(
            "database", 0, "SQL error " + i + ": " + sql.getErrorCode() + ": " + sql.getMessage());
        sql = sql.getNextException();
      }
      m_logger.log("database", 0, "ignoring SQL exception(s)");
    } catch (Exception e) {
      m_logger.log("database", 0, "caught " + e + ", ignoring");
      result = false;
    }

    if (result) m_count++;
    else m_rejected++;
    return result;
  }
 public void updateDefaultTemplate(Long vdcId, Long templateId) {
   VDC vdc = em.find(VDC.class, vdcId);
   Template template = em.find(Template.class, templateId);
   vdc.setDefaultTemplate(template);
 }
  public void delete(Long vdcId) {
    VDC vdc = em.find(VDC.class, vdcId);
    em.refresh(vdc);
    List studyIds = new ArrayList();

    // Get the studyIds separately, to avoid a ConcurrentAccess Exception
    // (This is necessary because the studies are deleted in Native SQL)
    for (Iterator it = vdc.getOwnedStudies().iterator(); it.hasNext(); ) {
      Study elem = (Study) it.next();
      studyIds.add(elem.getId());
    }

    if (!studyIds.isEmpty()) {
      studyService.deleteStudyList(studyIds);
    }

    vdc.getOwnedStudies().clear();

    vdc.setRootCollection(null);

    for (Iterator it = vdc.getOwnedCollections().iterator(); it.hasNext(); ) {
      VDCCollection elem = (VDCCollection) it.next();
      elem.setParentCollection(null);
      elem.setOwner(null);
      // Remove this Collection from all linked VDCs
      for (Iterator itc = elem.getLinkedVDCs().iterator(); itc.hasNext(); ) {
        VDC linkedVDC = (VDC) itc.next();
        linkedVDC.getLinkedCollections().remove(elem);
      }
    }

    for (Iterator it = vdc.getLinkedCollections().iterator(); it.hasNext(); ) {
      VDCCollection elem = (VDCCollection) it.next();
      VDCCollection coll = em.find(VDCCollection.class, elem.getId());
      coll.getLinkedVDCs().remove(vdc);
    }

    for (Iterator it = vdc.getVdcGroups().iterator(); it.hasNext(); ) {
      VDCGroup vdcGroup = (VDCGroup) it.next();
      vdcGroup.getVdcs().remove(vdc);
    }

    for (Iterator it = vdc.getVdcRoles().iterator(); it.hasNext(); ) {
      VDCRole vdcRole = (VDCRole) it.next();
      VDCUser vdcUser = vdcRole.getVdcUser();
      vdcUser.getVdcRoles().remove(vdcRole);
    }

    if (vdc.isHarvestingDv()) {
      harvesterService.removeHarvestTimer(vdc.getHarvestingDataverse());
    }

    // If the vdc Default Template is in the list of dataverse templates
    // (not the Network Default Template), then remove the reference before deleting the dataverse.
    // If not removed, you will get a foreign key violation when the persistence logic deletes
    // the collection of templates.
    if (vdc.getTemplates().contains(vdc.getDefaultTemplate())) {
      vdc.setDefaultTemplate(null);
    }
    em.remove(vdc);
  }
 public List getLinkedCollections(VDC vdc, boolean getHiddenCollections) {
   // getHiddenCollections is no longer used
   return vdc.getLinkedCollections();
 }
  private void create(VDCUser user, String name, String alias, String dtype, List studyFields) {
    VDC addedSite = new VDC();
    addedSite.setCreator(user);

    VDCNetwork vdcNetwork = vdcNetworkService.find(new Long(1));
    addedSite.setDefaultTemplate(vdcNetwork.getDefaultTemplate());

    em.persist(addedSite);

    addedSite.setName(name);
    addedSite.setAlias(alias);
    addedSite.setDtype(dtype);
    addedSite.setCreatedDate(DateUtil.getTimestamp());
    addedSite.getRootCollection().setName(name);

    addedSite.setDefaultTemplate(vdcNetwork.getDefaultTemplate());
    addedSite.setHeader(vdcNetwork.getDefaultVDCHeader());
    addedSite.setFooter(vdcNetwork.getDefaultVDCFooter());
    addedSite.setRestricted(true);
    addedSite.setDisplayAnnouncements(false);
    ArrayList advancedSearchFields = new ArrayList();
    ArrayList searchResultsFields = new ArrayList();

    for (Iterator it = studyFields.iterator(); it.hasNext(); ) {
      StudyField elem = (StudyField) it.next();
      if (elem.isAdvancedSearchField()) {
        advancedSearchFields.add(elem);
      }
      if (elem.isSearchResultField()) {
        searchResultsFields.add(elem);
      }
    }
    addedSite.setAdvSearchFields(advancedSearchFields);
    addedSite.setSearchResultFields(searchResultsFields);

    userService.addVdcRole(
        user.getId(), findByAlias(addedSite.getAlias()).getId(), roleService.ADMIN);
  }
  /** scholar dataverse */
  private void createScholarDataverse(
      Long userId,
      String firstName,
      String lastName,
      String name,
      String affiliation,
      String alias,
      String dataverseType,
      List studyFields) {
    VDC sDV = new VDC();
    em.persist(sDV);
    sDV.setCreator(em.find(VDCUser.class, userId));
    sDV.setName(name);
    sDV.setFirstName(firstName);
    sDV.setLastName(lastName);
    sDV.setAffiliation(affiliation);
    sDV.setName(name);
    sDV.setAlias(alias);
    sDV.setDtype(dataverseType);
    sDV.setCreatedDate(DateUtil.getTimestamp());
    sDV.getRootCollection().setName(name);

    VDCNetwork vdcNetwork = vdcNetworkService.find(new Long(1));
    sDV.setDefaultTemplate(vdcNetwork.getDefaultTemplate());
    sDV.setHeader(vdcNetwork.getDefaultVDCHeader());
    sDV.setFooter(vdcNetwork.getDefaultVDCFooter());
    sDV.setRestricted(true);
    sDV.setDisplayAnnouncements(false);
    ArrayList advancedSearchFields = new ArrayList();
    ArrayList searchResultsFields = new ArrayList();

    for (Iterator it = studyFields.iterator(); it.hasNext(); ) {
      StudyField elem = (StudyField) it.next();
      if (elem.isAdvancedSearchField()) {
        advancedSearchFields.add(elem);
      }
      if (elem.isSearchResultField()) {
        searchResultsFields.add(elem);
      }
    }
    sDV.setAdvSearchFields(advancedSearchFields);
    sDV.setSearchResultFields(searchResultsFields);

    userService.addVdcRole(userId, findByAlias(sDV.getAlias()).getId(), roleService.ADMIN);
  }
  public void addContributorRequest(Long vdcId, Long userId) {

    Role contributor = (Role) roleService.findByName(RoleServiceLocal.CONTRIBUTOR);
    VDC vdc = em.find(VDC.class, vdcId);
    VDCUser user = em.find(VDCUser.class, userId);
    RoleRequest roleRequest = new RoleRequest();
    roleRequest.setRole(contributor);
    roleRequest.setVdcUser(user);
    roleRequest.setVdc(vdc);
    vdc.getRoleRequests().add(roleRequest);
  }