Example usage for org.hibernate.type StandardBasicTypes LONG

List of usage examples for org.hibernate.type StandardBasicTypes LONG

Introduction

In this page you can find the example usage for org.hibernate.type StandardBasicTypes LONG.

Prototype

LongType LONG

To view the source code for org.hibernate.type StandardBasicTypes LONG.

Click Source Link

Document

The standard Hibernate type for mapping Long to JDBC java.sql.Types#BIGINT BIGINT .

Usage

From source file:de.fhdo.terminologie.ws.search.ListValueSetContents.java

License:Apache License

public ListValueSetContentsResponseType ListValueSetContents(ListValueSetContentsRequestType parameter,
        org.hibernate.Session session, String ipAddress) {
    if (logger.isInfoEnabled())
        logger.info("====== ListValueSetContents gestartet ======");

    // Return-Informationen anlegen
    ListValueSetContentsResponseType response = new ListValueSetContentsResponseType();
    response.setReturnInfos(new ReturnType());

    // Parameter prfen
    if (validateParameter(parameter, response) == false) {
        return response; // Fehler bei den Parametern
    }//from  w  w w.  j a  v a  2s .co  m

    boolean createHibernateSession = (session == null);

    // Login-Informationen auswerten (gilt fr jeden Webservice)
    boolean loggedIn = false;
    AuthenticateInfos loginInfoType = null;
    if (parameter != null && parameter.getLoginToken() != null) {
        loginInfoType = Authorization.authenticate(ipAddress, parameter.getLoginToken());
        loggedIn = loginInfoType != null;
    }

    try {
        // Hibernate-Block, Session ffnen
        org.hibernate.Session hb_session = null;

        if (createHibernateSession) {
            hb_session = HibernateUtil.getSessionFactory().openSession();
        } else {
            hb_session = session;
        }

        //hb_session.getTransaction().begin();
        //List<CodeSystemEntity> entityList = null;//new LinkedList<CodeSystemEntity>();
        try {
            ValueSetVersion vsv = parameter.getValueSet().getValueSetVersions().iterator().next();
            long valueSetVersionId = vsv.getVersionId();

            logger.debug("valueSetVersionId: " + valueSetVersionId);

            // Zuerst passenden Level-Metadataparameter lesen
            long metadataParameter_Level_Id = 0; // 355

            if (parameter.getReadMetadataLevel() != null && parameter.getReadMetadataLevel().booleanValue()) {
                logger.debug("Finde Level...");
                String hql = "select distinct mp from MetadataParameter mp join mp.valueSet vs join vs.valueSetVersions vsv where vsv.versionId="
                        + valueSetVersionId + " and mp.paramName='Level'";
                List list = hb_session.createQuery(hql).list();

                if (list != null && list.size() > 0) {
                    MetadataParameter mp = (MetadataParameter) list.get(0);
                    metadataParameter_Level_Id = mp.getId();
                }
            }

            logger.debug("metadataParameter_Level_Id: " + metadataParameter_Level_Id);

            String sql = "select * from code_system_entity_version csev"
                    + " JOIN concept_value_set_membership cvsm ON csev.versionId=cvsm.codeSystemEntityVersionId"
                    + " JOIN code_system_concept csc ON csev.versionId=csc.codeSystemEntityVersionId"
                    + " JOIN code_system_entity cse ON csev.codeSystemEntityId=cse.id"
                    + " JOIN code_system_version_entity_membership csvem ON csvem.codeSystemEntityId=cse.id"
                    + " JOIN code_system_version csv ON csv.versionId=csvem.codeSystemVersionId";

            if (metadataParameter_Level_Id > 0)
                sql += " LEFT JOIN value_set_metadata_value vsmv ON csev.versionId=vsmv.codeSystemEntityVersionId";

            boolean virtualValueSet = false;

            ValueSetVersion vsv_db = (ValueSetVersion) hb_session.get(ValueSetVersion.class,
                    vsv.getVersionId());
            if (vsv_db == null) {
                response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.WARN);
                response.getReturnInfos().setStatus(ReturnType.Status.FAILURE);
                response.getReturnInfos()
                        .setMessage("Value Set with id " + vsv.getVersionId() + " does not exist.");
                return response;
            }
            if (vsv_db.getVirtualCodeSystemVersionId() != null && vsv_db.getVirtualCodeSystemVersionId() > 0) {
                // get concepts from a codesystem version
                sql = "select * from code_system_entity_version csev"
                        + " JOIN code_system_concept csc ON csev.versionId=csc.codeSystemEntityVersionId"
                        + " JOIN code_system_entity cse ON csev.codeSystemEntityId=cse.id"
                        + " JOIN code_system_version_entity_membership csvem ON csvem.codeSystemEntityId=cse.id"
                        + " JOIN code_system_version csv ON csv.versionId=csvem.codeSystemVersionId";

                virtualValueSet = true;
            }

            // Parameter dem Helper hinzufgen
            // bitte immer den Helper verwenden oder manuell Parameter per Query.setString() hinzufgen,
            // sonst sind SQL-Injections mglich
            HQLParameterHelper parameterHelper = new HQLParameterHelper();
            if (virtualValueSet == false) {
                parameterHelper.addParameter("", "cvsm.valuesetVersionId", valueSetVersionId);
            }

            if (metadataParameter_Level_Id > 0)
                parameterHelper.addParameter("", "vsmv.metadataParameterId", metadataParameter_Level_Id);

            if (loggedIn == false) {
                parameterHelper.addParameter("csev.", "statusVisibility",
                        Definitions.STATUS_CODES.ACTIVE.getCode());
            }

            if (virtualValueSet == false && vsv.getConceptValueSetMemberships() != null
                    && vsv.getConceptValueSetMemberships().size() > 0) {
                ConceptValueSetMembership cvsm = vsv.getConceptValueSetMemberships().iterator().next();
                if (cvsm.getStatusDate() != null)
                    parameterHelper.addParameter("cvsm.", "statusDate", cvsm.getStatusDate());
            }

            if (virtualValueSet) {
                parameterHelper.addParameter("csv.", "versionId", vsv_db.getVirtualCodeSystemVersionId());
            }

            if (parameter.getCodeSystemEntity() != null
                    && parameter.getCodeSystemEntity().getCodeSystemEntityVersions() != null
                    && parameter.getCodeSystemEntity().getCodeSystemEntityVersions().size() > 0) {
                CodeSystemEntityVersion csev = (CodeSystemEntityVersion) parameter.getCodeSystemEntity()
                        .getCodeSystemEntityVersions().toArray()[0];
                parameterHelper.addParameter("csev.", "statusVisibilityDate", csev.getStatusVisibilityDate());

                if (csev.getCodeSystemConcepts() != null && csev.getCodeSystemConcepts().size() > 0) {
                    CodeSystemConcept csc = (CodeSystemConcept) csev.getCodeSystemConcepts().toArray()[0];
                    parameterHelper.addParameter("csc.", "code", csc.getCode());
                    parameterHelper.addParameter("csc.", "term", csc.getTerm());
                    parameterHelper.addParameter("csc.", "termAbbrevation", csc.getTermAbbrevation());
                    parameterHelper.addParameter("csc.", "isPreferred", csc.getIsPreferred());

                    /*if (csc.getCodeSystemConceptTranslations() != null && csc.getCodeSystemConceptTranslations().size() > 0)
                    {
                      CodeSystemConceptTranslation csct = (CodeSystemConceptTranslation) csc.getCodeSystemConceptTranslations().toArray()[0];
                      parameterHelper.addParameter("csct.", "term", csct.getTerm());
                      parameterHelper.addParameter("csct.", "termAbbrevation", csct.getTermAbbrevation());
                      if (csct.getLanguageCd() != null && csct.getLanguageCd().length() > 0)
                      {
                        languageCd = csct.getLanguageCd();
                      }
                    }*/
                }
            }

            // Parameter hinzufgen (immer mit AND verbunden)
            // Gesamt-Anzahl lesen
            String where = parameterHelper.getWhere("");

            String sortStr = " ORDER BY cvsm.orderNr,csc.code";

            if (virtualValueSet)
                sortStr = " ORDER BY csc.code";

            if (parameter.getSortingParameter() != null) {
                if (parameter.getSortingParameter().getSortType() == null || parameter.getSortingParameter()
                        .getSortType() == SortingType.SortType.ALPHABETICALLY) {
                    sortStr = " ORDER BY";

                    if (parameter.getSortingParameter().getSortBy() != null
                            && parameter.getSortingParameter().getSortBy() == SortingType.SortByField.TERM) {
                        sortStr += " csc.term";
                    } else {
                        sortStr += " csc.code";
                    }

                    if (parameter.getSortingParameter().getSortDirection() != null && parameter
                            .getSortingParameter().getSortDirection() == SortingType.SortDirection.DESCENDING) {
                        sortStr += " desc";
                    }
                }
            }

            String where_all = where + sortStr;
            sql += " " + where_all;

            logger.debug("SQL: " + sql);

            // Query erstellen
            SQLQuery q = hb_session.createSQLQuery(sql);
            q.addScalar("csc.code", StandardBasicTypes.TEXT); // Index: 0
            q.addScalar("csc.term", StandardBasicTypes.TEXT);
            q.addScalar("csc.termAbbrevation", StandardBasicTypes.TEXT);
            q.addScalar("csc.description", StandardBasicTypes.TEXT);
            q.addScalar("csc.isPreferred", StandardBasicTypes.BOOLEAN);
            q.addScalar("csc.codeSystemEntityVersionId", StandardBasicTypes.LONG);

            q.addScalar("csev.effectiveDate", StandardBasicTypes.DATE); // Index: 6
            q.addScalar("csev.insertTimestamp", StandardBasicTypes.DATE);
            q.addScalar("csev.isLeaf", StandardBasicTypes.BOOLEAN);
            q.addScalar("csev.majorRevision", StandardBasicTypes.INTEGER);
            q.addScalar("csev.minorRevision", StandardBasicTypes.INTEGER);
            q.addScalar("csev.statusVisibility", StandardBasicTypes.INTEGER);
            q.addScalar("csev.statusVisibilityDate", StandardBasicTypes.DATE);
            q.addScalar("csev.versionId", StandardBasicTypes.LONG);
            q.addScalar("csev.codeSystemEntityId", StandardBasicTypes.LONG);

            q.addScalar("cse.id", StandardBasicTypes.LONG); // Index: 15
            q.addScalar("cse.currentVersionId", StandardBasicTypes.LONG);

            q.addScalar("csc.meaning", StandardBasicTypes.TEXT); //Index: 17
            q.addScalar("csc.hints", StandardBasicTypes.TEXT);

            if (virtualValueSet == false) {
                q.addScalar("cvsm.valueOverride", StandardBasicTypes.TEXT); //Index: 19
                q.addScalar("cvsm.status", StandardBasicTypes.INTEGER);
                q.addScalar("cvsm.statusDate", StandardBasicTypes.DATE);
                q.addScalar("cvsm.isStructureEntry", StandardBasicTypes.BOOLEAN);
                q.addScalar("cvsm.orderNr", StandardBasicTypes.LONG);
                q.addScalar("cvsm.description", StandardBasicTypes.TEXT);
                q.addScalar("cvsm.hints", StandardBasicTypes.TEXT);
            }

            q.addScalar("csvem.isAxis", StandardBasicTypes.BOOLEAN); // Index: 26
            q.addScalar("csvem.isMainClass", StandardBasicTypes.BOOLEAN);

            q.addScalar("csv.previousVersionID", StandardBasicTypes.LONG); // Index: 28
            q.addScalar("csv.name", StandardBasicTypes.TEXT);
            q.addScalar("csv.status", StandardBasicTypes.INTEGER);
            q.addScalar("csv.statusDate", StandardBasicTypes.DATE);
            q.addScalar("csv.releaseDate", StandardBasicTypes.DATE);
            q.addScalar("csv.expirationDate", StandardBasicTypes.DATE);
            q.addScalar("csv.source", StandardBasicTypes.TEXT);
            q.addScalar("csv.preferredLanguageCd", StandardBasicTypes.TEXT);
            q.addScalar("csv.oid", StandardBasicTypes.TEXT);
            q.addScalar("csv.licenceHolder", StandardBasicTypes.TEXT);
            q.addScalar("csv.underLicence", StandardBasicTypes.BOOLEAN);
            q.addScalar("csv.insertTimestamp", StandardBasicTypes.DATE);
            q.addScalar("csv.validityRange", StandardBasicTypes.LONG); // Index: 40

            q.addScalar("csv.versionId", StandardBasicTypes.LONG);

            if (metadataParameter_Level_Id > 0) {
                q.addScalar("vsmv.parameterValue", StandardBasicTypes.TEXT); // Index: 42
            }

            // TODO bersetzungen
            /*q.addScalar("translation_term", StandardBasicTypes.TEXT);  // Index: 17
             q.addScalar("translation_termAbbrevation", StandardBasicTypes.TEXT);
             q.addScalar("translation_languageId", StandardBasicTypes.LONG);
             q.addScalar("translation_description", StandardBasicTypes.TEXT);
             q.addScalar("translation_id", StandardBasicTypes.LONG);
                    
             */
            parameterHelper.applySQLParameter(q);
            //q.setLong("languageId", languageId);

            //+ " ORDER BY csc.code"
            //q.setParameter("codeSystemVersionId", codeSystemVersionId);

            /*List<CodeSystemConcept> conceptList = (List<CodeSystemConcept>) q.list();
                    
             for (CodeSystemConcept csc : conceptList)
             {
             logger.debug(csc.getCode());
             anzahl++;
             }*/
            response.setCodeSystemEntity(new LinkedList<CodeSystemEntity>());

            List conceptList = (List) q.list();

            logger.debug("Anzahl: " + conceptList.size());

            long lastCodeSystemEntityVersionId = 0;
            CodeSystemEntity cse;
            CodeSystemEntityVersion csev;
            CodeSystemConcept csc;
            CodeSystemVersionEntityMembership csvem;
            CodeSystemVersion csv;
            ConceptValueSetMembership cvsm;
            boolean fertig = false;
            int anzahl = 0;

            Iterator it = conceptList.iterator();

            while (it.hasNext()) {
                Object[] item = null;
                long codeSystemEntityVersionId = 0;
                do {
                    if (it.hasNext() == false) {
                        fertig = true;
                        break;
                    }

                    item = (Object[]) it.next();

                    // Prfen, ob Translation (1:N)
                    codeSystemEntityVersionId = (Long) item[5];
                    /*if (lastCodeSystemEntityVersionId == codeSystemEntityVersionId)
                     {
                     // Gleiches Konzept, Assoziation hinzufgen
                     // TODO Sprachen hinzufgen ?
                     //if (parameter.isLookForward())
                     //  addAssociationToEntityVersion(csev, item);
                     }*/
                } while (lastCodeSystemEntityVersionId == codeSystemEntityVersionId);

                if (fertig)
                    break;

                // Konzepte zusammenbauen
                cse = new CodeSystemEntity();
                csev = new CodeSystemEntityVersion();
                csc = new CodeSystemConcept();
                csvem = new CodeSystemVersionEntityMembership();
                csvem.setCodeSystemVersion(new CodeSystemVersion());
                cvsm = new ConceptValueSetMembership();
                csv = new CodeSystemVersion();

                int index = 0;

                // Konzept
                /*if (item[0] != null)
                 csc.setCode(item[0].toString());
                 if (item[1] != null)
                 csc.setTerm(item[1].toString());
                 if (item[2] != null)
                 csc.setTermAbbrevation(item[2].toString());
                 if (item[3] != null)
                 csc.setDescription(item[3].toString());
                 if (item[4] != null)
                 csc.setIsPreferred((Boolean) item[4]);
                 if (item[5] != null)
                 csc.setCodeSystemEntityVersionId((Long) item[5]);
                 if (item[17] != null)
                 csc.setMeaning(item[17].toString());
                 if (item[18] != null)
                 csc.setHints(item[18].toString());
                        
                 // Entity Version
                 if (item[6] != null)
                 csev.setEffectiveDate((Date) item[6]);
                 if (item[7] != null)
                 csev.setInsertTimestamp((Date) item[7]);
                 if (item[8] != null)
                 csev.setIsLeaf((Boolean) item[8]);
                 if (item[9] != null)
                 csev.setMajorRevision((Integer) item[9]);
                 if (item[10] != null)
                 csev.setMinorRevision((Integer) item[10]);
                 if (item[11] != null)
                 csev.setStatusVisibility((Integer) item[11]);
                 if (item[12] != null)
                 csev.setStatusVisibilityDate((Date) item[12]);
                 if (item[13] != null)
                 {
                 csev.setVersionId((Long) item[13]);
                 cvsm.setId(new ConceptValueSetMembershipId(csev.getVersionId(), valueSetVersionId));
                 }
                 // Code System Entity
                 if (item[15] != null)
                 cse.setId((Long) item[15]);
                 if (item[16] != null)
                 cse.setCurrentVersionId((Long) item[16]);
                        
                 if (virtualValueSet == false)
                 {
                 if (item[19] != null)
                 cvsm.setValueOverride(item[19].toString());
                 if (item[20] != null)
                 cvsm.setStatus((Integer) item[20]);
                 if (item[21] != null)
                 cvsm.setStatusDate((Date) item[21]);
                 if (item[22] != null)
                 cvsm.setIsStructureEntry((Boolean) item[22]);
                 if (item[23] != null)
                 cvsm.setOrderNr((Long) item[23]);
                 if (item[24] != null)
                 cvsm.setDescription(item[24].toString());
                 if (item[25] != null)
                 cvsm.setHints(item[25].toString());
                 }
                        
                 if (item[26] != null)
                 csvem.setIsAxis((Boolean) item[26]);
                 if (item[27] != null)
                 csvem.setIsMainClass((Boolean) item[27]);
                        
                 if (item[28] != null)
                 csv.setPreviousVersionId((Long) item[28]);
                 if (item[29] != null)
                 csv.setName(item[29].toString());
                 if (item[30] != null)
                 csv.setStatus((Integer) item[30]);
                 if (item[31] != null)
                 csv.setStatusDate((Date) item[31]);
                 if (item[32] != null)
                 csv.setReleaseDate((Date) item[32]);
                 if (item[33] != null)
                 csv.setExpirationDate((Date) item[33]);
                 if (item[34] != null)
                 csv.setSource(item[34].toString());
                 if (item[35] != null)
                 csv.setPreferredLanguageCd(item[35].toString());
                 if (item[36] != null)
                 csv.setOid(item[36].toString());
                 if (item[37] != null)
                 csv.setLicenceHolder(item[37].toString());
                 if (item[38] != null)
                 csv.setUnderLicence((Boolean) item[38]);
                 if (item[39] != null)
                 csv.setInsertTimestamp((Date) item[39]);
                 if (item[40] != null)
                 csv.setValidityRange((Long) item[40]);
                        
                 // Metadaten hinzufgen
                 if (item[41] != null)
                 csv.setVersionId((Long) item[41]);*/
                csc.setCode(getItemStr(item, index++));
                csc.setTerm(getItemStr(item, index++));
                csc.setTermAbbrevation(getItemStr(item, index++));
                csc.setDescription(getItemStr(item, index++));
                csc.setIsPreferred(getItemBool(item, index++));
                csc.setCodeSystemEntityVersionId(getItemLong(item, index++));

                csev.setEffectiveDate(getItemDate(item, index++));
                csev.setInsertTimestamp(getItemDate(item, index++));
                csev.setIsLeaf(getItemBool(item, index++));
                csev.setMajorRevision(getItemInt(item, index++));
                csev.setMinorRevision(getItemInt(item, index++));
                csev.setStatusVisibility(getItemInt(item, index++));
                csev.setStatusVisibilityDate(getItemDate(item, index++));
                csev.setVersionId(getItemLong(item, index++));
                if (csev.getVersionId() != null)
                    cvsm.setId(new ConceptValueSetMembershipId(csev.getVersionId(), valueSetVersionId));

                long cse_id = getItemLong(item, index++);

                // Code System Entity
                cse.setId(getItemLong(item, index++));
                cse.setCurrentVersionId(getItemLong(item, index++));

                csc.setMeaning(getItemStr(item, index++)); // Index: 17
                csc.setHints(getItemStr(item, index++));

                if (virtualValueSet == false) {
                    cvsm.setValueOverride(getItemStr(item, index++));
                    cvsm.setStatus(getItemInt(item, index++));
                    cvsm.setStatusDate(getItemDate(item, index++));
                    cvsm.setIsStructureEntry(getItemBool(item, index++));
                    cvsm.setOrderNr(getItemLong(item, index++));
                    cvsm.setDescription(getItemStr(item, index++));
                    cvsm.setHints(getItemStr(item, index++));
                }

                csvem.setIsAxis(getItemBool(item, index++));
                csvem.setIsMainClass(getItemBool(item, index++));

                csv.setPreviousVersionId(getItemLong(item, index++));
                csv.setName(getItemStr(item, index++));
                csv.setStatus(getItemInt(item, index++));
                csv.setStatusDate(getItemDate(item, index++));
                csv.setReleaseDate(getItemDate(item, index++));
                csv.setExpirationDate(getItemDate(item, index++));
                csv.setSource(getItemStr(item, index++));
                csv.setPreferredLanguageCd(getItemStr(item, index++));
                csv.setOid(getItemStr(item, index++));
                csv.setLicenceHolder(getItemStr(item, index++));
                csv.setUnderLicence(getItemBool(item, index++));
                csv.setInsertTimestamp(getItemDate(item, index++));
                csv.setValidityRange(getItemLong(item, index++));

                // Metadaten hinzufgen
                if (metadataParameter_Level_Id > 0)
                    csv.setVersionId(getItemLong(item, index++));

                // Metadaten hinzufgen
                if (item != null && item.length > 42 && item[42] != null) {
                    ValueSetMetadataValue mv = new ValueSetMetadataValue();
                    mv.setParameterValue(item[42].toString());
                    mv.setCodeSystemEntityVersion(null);
                    mv.setMetadataParameter(null);
                    csev.setValueSetMetadataValues(new HashSet<ValueSetMetadataValue>());
                    csev.getValueSetMetadataValues().add(mv);
                }

                // TODO Sprachen hinzufgen
                csvem.setCodeSystemVersion(csv);
                csev.setCodeSystemConcepts(new HashSet<CodeSystemConcept>());
                csev.getCodeSystemConcepts().add(csc);
                csev.setConceptValueSetMemberships(new HashSet<ConceptValueSetMembership>());
                csev.getConceptValueSetMemberships().add(cvsm);
                cse.setCodeSystemEntityVersions(new HashSet<CodeSystemEntityVersion>());
                cse.getCodeSystemEntityVersions().add(csev);
                cse.setCodeSystemVersionEntityMemberships(new HashSet<CodeSystemVersionEntityMembership>());
                cse.getCodeSystemVersionEntityMemberships().add(csvem);
                response.getCodeSystemEntity().add(cse);

                lastCodeSystemEntityVersionId = codeSystemEntityVersionId;

                anzahl++;
            }

            response.getReturnInfos().setCount(anzahl);

            if (response.getCodeSystemEntity() == null || anzahl == 0) {
                //response.getReturnInfos().setMessage("Zu dem angegebenen ValueSet wurden keine Konzepte gefunden!");
                response.getReturnInfos().setMessage("No concepts found for given Value Set!");
                response.getReturnInfos().setStatus(ReturnType.Status.FAILURE);
            } else {
                if (virtualValueSet)
                    response.getReturnInfos()
                            .setMessage(anzahl + " concepts successfully returned (Virtual Value Set).");
                else
                    response.getReturnInfos().setMessage(anzahl + " concepts successfully returned.");
                response.getReturnInfos().setStatus(ReturnType.Status.OK);
            }
            response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.INFO);
        } catch (Exception e) {

            //hb_session.getTransaction().rollback();
            // Fehlermeldung an den Aufrufer weiterleiten
            response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.ERROR);
            response.getReturnInfos().setStatus(ReturnType.Status.FAILURE);
            response.getReturnInfos()
                    .setMessage("Fehler bei 'ListValueSetContents', Hibernate: " + e.getLocalizedMessage());

            logger.error("Fehler in 'ListValueSetContents', Hibernate: " + e.getLocalizedMessage());
            LoggingOutput.outputException(e, this);
        } finally {
            if (createHibernateSession)
                hb_session.close();
        }
    } catch (Exception e) {
        // Fehlermeldung an den Aufrufer weiterleiten
        response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.ERROR);
        response.getReturnInfos().setStatus(ReturnType.Status.FAILURE);
        response.getReturnInfos().setMessage("Fehler bei 'ReturnConceptDetails': " + e.getLocalizedMessage());

        logger.error("Fehler bei 'ListValueSetContents': " + e.getLocalizedMessage());
        LoggingOutput.outputException(e, this);
    }

    return response;
}

From source file:debop4k.data.orm.hibernate.usertypes.jodatime.DurationUserType.java

License:Apache License

@Override
public int[] sqlTypes() {
    return new int[] { StandardBasicTypes.LONG.sqlType() };
}

From source file:debop4k.data.orm.hibernate.usertypes.jodatime.DurationUserType.java

License:Apache License

@Override
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner)
        throws HibernateException, SQLException {
    Long millis = (Long) StandardBasicTypes.LONG.nullSafeGet(rs, names[0], session, owner);
    return (millis != null) ? Duration.millis(millis) : null;
}

From source file:debop4k.data.orm.hibernate.usertypes.jodatime.DurationUserType.java

License:Apache License

@Override
public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session)
        throws HibernateException, SQLException {
    if (value == null) {
        StandardBasicTypes.LONG.nullSafeSet(st, null, index, session);
    } else {//from ww  w .j a  v  a 2s.  co  m
        StandardBasicTypes.LONG.nullSafeSet(st, ((Duration) value).getMillis(), index, session);
    }
}

From source file:edu.psu.iam.cpr.core.database.Database.java

License:Apache License

/**
 * This method is used to find a registration authority based on a server principal.
 * @param principalId contains the ra server principal.
 * @param serviceName contains the name of the calling service.
 * @return will return a list of longs contains the registration authority key and the ra server principal key.
 * @throws CprException will be thrown if there are any CPR Related problems.
 */// w  w w. j a  v a  2s  .c  om
private List<Long> findRegistrationAuthority(final String principalId, final String serviceName)
        throws CprException {

    Long localRegistrationAuthoritykey = NOT_FOUND_VALUE;
    Long raServerPrincipalKey = NOT_FOUND_VALUE;

    String suspendFlag = "Y";

    // Build the query.
    final StringBuilder sb = new StringBuilder(BUFFER_SIZE);
    sb.append("SELECT ra.registration_authority_key, ra.suspend_flag, rasrvrprinc.ra_server_principal_key ");
    sb.append("FROM {h-schema}registration_authority ra JOIN {h-schema}ra_server_principals rasrvrprinc ");
    sb.append("ON ra.registration_authority_key = rasrvrprinc.registration_authority_key ");
    sb.append("WHERE rasrvrprinc.ra_server_principal = :ra_server_principal_in ");
    sb.append("AND ra.end_date IS NULL ");
    sb.append("AND rasrvrprinc.end_date IS NULL");

    // Create the query, bind the input parameters and determine the output parameters.
    SQLQuery query = session.createSQLQuery(sb.toString());
    query.setParameter("ra_server_principal_in", principalId);
    query.addScalar("registration_authority_key", StandardBasicTypes.LONG);
    query.addScalar("suspend_flag", StandardBasicTypes.STRING);
    query.addScalar("ra_server_principal_key", StandardBasicTypes.LONG);

    // See if a record is found, if so get its data.
    Iterator<?> it = query.list().iterator();
    if (it.hasNext()) {
        Object[] res = (Object[]) it.next();
        localRegistrationAuthoritykey = (Long) res[RA_KEY_INDEX];
        suspendFlag = (String) res[RA_SUSPEND_FLAG];
        raServerPrincipalKey = (Long) res[RA_SERVER_PRINCIPAL_KEY_INDEX];
    }

    // Is the RA suspended?
    if (localRegistrationAuthoritykey.equals(NOT_FOUND_VALUE) || raServerPrincipalKey.equals(NOT_FOUND_VALUE)
            || Utility.isOptionYes(suspendFlag)) {
        throw new CprException(ReturnType.NOT_AUTHORIZED_EXCEPTION, serviceName);
    }

    List<Long> methodReturn = new ArrayList<Long>();
    methodReturn.add(localRegistrationAuthoritykey);
    methodReturn.add(raServerPrincipalKey);
    return methodReturn;

}

From source file:edu.psu.iam.cpr.core.database.Database.java

License:Apache License

/**
 * This method is used to verify that the client's IP address is authorized to call the service for the particular RA.
 * @param raServerPrincipalKey contains the ra server principal key associated with the RA.
 * @param serviceName contains the name of the service that is being called.
 * @param clientIpAddress contains the ip address of the caller.
 * @throws CprException will be thrown if there are any CPR related problems.
 *//* ww  w.  j av  a 2 s  .c o  m*/
private void verifyClientIpAddress(final Long raServerPrincipalKey, final String serviceName,
        final String clientIpAddress) throws CprException {

    Long localRaServerPrincipalKey = NOT_FOUND_VALUE;

    final StringBuilder sb = new StringBuilder();
    sb.append("select ra_server_principal_key from {h-schema}server_principal_ip ");
    sb.append("where ra_server_principal_key = :ra_server_principal_key AND ");
    sb.append("(ip_address = :wildcard or ip_address = :client_ip_address)");

    SQLQuery query = session.createSQLQuery(sb.toString());
    query.addScalar("ra_server_principal_key", StandardBasicTypes.LONG);
    query.setParameter("ra_server_principal_key", raServerPrincipalKey);
    query.setParameter("wildcard", WILD_CARD_IP);
    query.setParameter("client_ip_address", clientIpAddress);

    for (Iterator<?> it = query.list().iterator(); it.hasNext();) {
        localRaServerPrincipalKey = (Long) it.next();
    }

    if (localRaServerPrincipalKey.equals(NOT_FOUND_VALUE)) {
        throw new CprException(ReturnType.NOT_AUTHORIZED_EXCEPTION, serviceName);
    }
}

From source file:edu.psu.iam.cpr.core.database.Database.java

License:Apache License

/**
 * This routine will determine if a particular server principal is authorized to call a service.
 * @param principalId contains the requestor's principal identifier.
 * @param requestor contains the userid of the person requesting access.
 * @param serviceName contains the name of the service.
 * @param clientIpAddress contains the client ip address.
 * @throws CprException /*  www . j a  va 2s .  com*/
 */
public void requestorAuthorized(final String principalId, final String requestor, final String serviceName,
        final String clientIpAddress) throws CprException {

    String grpMbrsSuspendFlag = "Y";
    String cprAccGrpsSuspendFlag = "Y";
    String webSrvAccSuspendFlag = "Y";
    Long localCprAccessGroupsKey = NOT_FOUND_VALUE;

    // Get the RA information.
    List<Long> methodReturn = findRegistrationAuthority(principalId, serviceName);
    Long localRegistrationAuthorityKey = methodReturn.get(0);
    Long raServerPrincipalKey = methodReturn.get(1);

    // Determine if the client ip address is valid for the particular RA.
    verifyClientIpAddress(raServerPrincipalKey, serviceName, clientIpAddress);

    // Determine the user's status and group for the particular RA.

    // Build the query.
    final StringBuilder sb = new StringBuilder();
    sb.append(
            "SELECT cpr_access_groups_key, grpmbrs_suspend_flag, cpraccgprs_suspend_flag, websrvacc_suspend_flag ");
    sb.append("FROM {h-schema}v_ra_group_web_service ");
    sb.append("WHERE registration_authority_key = :l_ra_key ");
    sb.append("AND ra_server_principal_key = :ra_sp_key ");
    sb.append("AND web_service = :web_service_in ");
    sb.append("AND userid = :requested_by_in");

    // Create the query, bind the parameters and determine the returns.
    SQLQuery query = session.createSQLQuery(sb.toString());
    query.setParameter("l_ra_key", localRegistrationAuthorityKey);
    query.setParameter("ra_sp_key", raServerPrincipalKey);
    query.setParameter("web_service_in", serviceName);
    query.setParameter("requested_by_in", requestor);
    query.addScalar("cpr_access_groups_key", StandardBasicTypes.LONG);
    query.addScalar("grpmbrs_suspend_flag", StandardBasicTypes.STRING);
    query.addScalar("cpraccgprs_suspend_flag", StandardBasicTypes.STRING);
    query.addScalar("websrvacc_suspend_flag", StandardBasicTypes.STRING);

    // Perform the query.
    for (Iterator<?> it = query.list().iterator(); it.hasNext();) {
        Object[] res = (Object[]) it.next();
        localCprAccessGroupsKey = (Long) res[CPR_ACCESS_GROUPS_KEY];
        grpMbrsSuspendFlag = (String) res[GRP_MBRS_SUSPEND_FLAG];
        cprAccGrpsSuspendFlag = (String) res[CPR_GRPS_SUSPEND_FLAG];
        webSrvAccSuspendFlag = (String) res[WEB_SRV_SUSPEND_FLAG];
    }

    // If any of the suspend flags is set to Yes, we need to throw an exception.
    if (localCprAccessGroupsKey.equals(NOT_FOUND_VALUE) || Utility.isOptionYes(grpMbrsSuspendFlag)
            || Utility.isOptionYes(cprAccGrpsSuspendFlag) || Utility.isOptionYes(webSrvAccSuspendFlag)) {
        throw new CprException(ReturnType.NOT_AUTHORIZED_EXCEPTION, serviceName);
    }

    setCprAccessGroupsKey(localCprAccessGroupsKey);
    setRegistrationAuthorityKey(localRegistrationAuthorityKey);

}

From source file:edu.psu.iam.cpr.core.database.Database.java

License:Apache License

/**
 * This routine is used to verify that the requester is allowed to perform an operation on a particular data type.
 * This routine will return true if the operation is allowed, otherwise it will throw an exception.
 * @param dataResource contains the data source that is being checked.
 * @param action contains the action that is being checked.
 * @param requestedBy contains the access id of the perform who requested this operation.
 * @return will return true if successful.
 * @throws CprException will be thrown if the access is denied.
 *//*from   www.  ja  va  2s.c  om*/
public boolean isDataActionAuthorized(final String dataResource, final String action, final String requestedBy)
        throws CprException {

    // Verify that the operation being checked is against a valid data key.
    final Long dataTypeKey = AccessType.valueOf(dataResource.toUpperCase().trim()).index();
    final Long accessOperationKey = AccessType.valueOf(action.toUpperCase().trim()).index();
    boolean dataKeyValid = false;
    try {

        // Build the query.
        final StringBuilder sb = new StringBuilder(BUFFER_SIZE);
        sb.append("SELECT data_types.data_type_key ");
        sb.append("FROM {h-schema}data_types ");
        sb.append("WHERE data_types.data_type_key = :data_type_key_in ");
        sb.append("AND data_types.active_flag = 'Y' ");

        // Create the query, bind the parameters and set the return type.
        final SQLQuery query = session.createSQLQuery(sb.toString());
        query.setParameter("data_type_key_in", dataTypeKey);
        query.addScalar("data_type_key", StandardBasicTypes.LONG);

        for (final Iterator<?> it = query.list().iterator(); it.hasNext();) {
            it.next();
            dataKeyValid = true;
        }
    } finally {
        if (!dataKeyValid) {
            throw new CprException(ReturnType.DATA_CHANGE_EXCEPTION, dataResource);
        }
    }

    // Do the query to determine if they have access.
    String readFlag = "N";
    String writeFlag = "N";
    String archiveFlag = "N";
    final StringBuilder sb = new StringBuilder(BUFFER_SIZE);
    sb.append("SELECT v_group_data_type_access.read_flag, v_group_data_type_access.write_flag, ");
    sb.append("v_group_data_type_access.archive_flag ");
    sb.append("FROM {h-schema}v_group_data_type_access ");
    sb.append("WHERE v_group_data_type_access.cpr_access_groups_key = :cpr_access_groups_key_in ");
    sb.append("AND v_group_data_type_access.data_type_key = :data_type_key_in");

    // Create the query, bind the parameters and set the return type.
    final SQLQuery query = session.createSQLQuery(sb.toString());
    query.setParameter("cpr_access_groups_key_in", getCprAccessGroupsKey());
    query.setParameter("data_type_key_in", dataTypeKey);
    query.addScalar("read_flag", StandardBasicTypes.STRING);
    query.addScalar("write_flag", StandardBasicTypes.STRING);
    query.addScalar("archive_flag", StandardBasicTypes.STRING);

    for (final Iterator<?> it = query.list().iterator(); it.hasNext();) {
        Object[] res = (Object[]) it.next();
        readFlag = (String) res[0];
        writeFlag = (String) res[1];
        archiveFlag = (String) res[2];
    }

    boolean hasAccess = false;
    if (accessOperationKey == AccessType.ACCESS_OPERATION_ARCHIVE.index()) {
        hasAccess = Utility.isOptionYes(archiveFlag);
    } else if (accessOperationKey == AccessType.ACCESS_OPERATION_READ.index()) {
        hasAccess = Utility.isOptionYes(readFlag);
    } else if (accessOperationKey == AccessType.ACCESS_OPERATION_WRITE.index()) {
        hasAccess = Utility.isOptionYes(writeFlag);
    }

    if (!hasAccess) {
        throw new CprException(ReturnType.DATA_CHANGE_EXCEPTION, AccessType.get(dataTypeKey).toString());
    }

    return hasAccess;
}

From source file:edu.psu.iam.cpr.core.database.Database.java

License:Apache License

/**
 * This routine is used to verify that the requester is allowed to perform an operation on a particular data type.
 * This routine will return true if the operation is allowed, otherwise it will throw an exception.
 * @param iamGroupKey contains the iam group key which indicates which group the user is a member of. 
 * @param dataTypeKey contains the data type key associated with the data element.
 * @param accessOperationKey contains the access operation key which indicates the type of operation.
 * @param requestedBy contains the access id of the perform who requested this operation.
 * @return will return true if successful.
 * @throws CprException will be thrown if the access is denied.
 *//* w ww.  j a  v a2  s .c om*/
public boolean isDataActionAuthorizedOldCode(final long iamGroupKey, final long dataTypeKey,
        final long accessOperationKey, final String requestedBy) throws CprException {

    // Verify that the operation being checked is against a valid data key.
    boolean dataKeyValid = false;
    try {

        // Build the query.
        final StringBuilder sb = new StringBuilder(BUFFER_SIZE);
        sb.append("SELECT data_types.data_type_key ");
        sb.append("FROM {h-schema}data_types ");
        sb.append("WHERE data_types.data_type_key = :data_type_key_in ");
        sb.append("AND data_types.active_flag = 'Y' ");

        // Create the query, bind the parameters and set the return type.
        final SQLQuery query = session.createSQLQuery(sb.toString());
        query.setParameter("data_type_key_in", dataTypeKey);
        query.addScalar("data_type_key", StandardBasicTypes.LONG);

        final Iterator<?> it = query.list().iterator();
        if (it.hasNext()) {
            dataKeyValid = true;
        }
    } finally {
        if (!dataKeyValid) {
            throw new CprException(ReturnType.DATA_CHANGE_EXCEPTION, AccessType.get(dataTypeKey).toString());
        }
    }

    // Do the query to determine if they have access.
    String readFlag = "N";
    String writeFlag = "N";
    String archiveFlag = "N";
    final StringBuilder sb = new StringBuilder(BUFFER_SIZE);
    sb.append("SELECT v_group_data_type_access.read_flag, v_group_data_type_access.write_flag, ");
    sb.append("v_group_data_type_access.archive_flag ");
    sb.append("FROM {h-schema}v_group_data_type_access ");
    sb.append("WHERE v_group_data_type_access.iam_group_key = :iam_group_key_in ");
    sb.append("AND v_group_data_type_access.data_type_key = :data_type_key_in");

    // Create the query, bind the parameters and set the return type.
    final SQLQuery query = session.createSQLQuery(sb.toString());
    query.setParameter("iam_group_key_in", iamGroupKey);
    query.setParameter("data_type_key_in", dataTypeKey);
    query.addScalar("read_flag", StandardBasicTypes.STRING);
    query.addScalar("write_flag", StandardBasicTypes.STRING);
    query.addScalar("archive_flag", StandardBasicTypes.STRING);

    final Iterator<?> it = query.list().iterator();
    if (it.hasNext()) {
        Object[] res = (Object[]) it.next();
        readFlag = (String) res[0];
        writeFlag = (String) res[1];
        archiveFlag = (String) res[2];
    }

    boolean hasAccess = false;
    if (accessOperationKey == AccessType.ACCESS_OPERATION_ARCHIVE.index()) {
        hasAccess = Utility.isOptionYes(archiveFlag);
    } else if (accessOperationKey == AccessType.ACCESS_OPERATION_READ.index()) {
        hasAccess = Utility.isOptionYes(readFlag);
    } else if (accessOperationKey == AccessType.ACCESS_OPERATION_WRITE.index()) {
        hasAccess = Utility.isOptionYes(writeFlag);
    }

    if (!hasAccess) {
        throw new CprException(ReturnType.DATA_CHANGE_EXCEPTION, AccessType.get(dataTypeKey).toString());
    }

    return hasAccess;
}

From source file:edu.psu.iam.cpr.core.database.Database.java

License:Apache License

/**
 * This routine is used to determine if an RA is authorize to assign an affiliation.
 * @param affiliationType - contains the affiliation
 * @param requestedBy - userid of the requestor
 * //www .j  av  a 2 s .  com
 * @return true if ra is authorized for affiliation
 * 
 * @throws CprException
 */
public boolean isAffiliationAccessAuthorized(final String affiliationType, final String requestedBy)
        throws CprException {

    final Long affiliationKey = AffiliationsType.valueOf(affiliationType.toUpperCase().trim()).index();
    boolean affiliationKeyValid = false;
    final StringBuilder sb = new StringBuilder(BUFFER_SIZE);

    // Build the query.

    sb.append("SELECT affiliations.affiliation_key ");
    sb.append("FROM {h-schema}affiliations ");
    sb.append("WHERE affiliations.affiliation_key = :affiliation_key_in ");
    sb.append("AND affiliations.active_flag = 'Y' ");

    SQLQuery query = session.createSQLQuery(sb.toString());
    query.setParameter("affiliation_key_in", affiliationKey);
    query.addScalar("affiliation_key", StandardBasicTypes.LONG);

    Iterator<?> it = query.list().iterator();
    if (it.hasNext()) {
        affiliationKeyValid = true;
    }
    if (!affiliationKeyValid) {
        throw new CprException(ReturnType.DATA_CHANGE_EXCEPTION,
                AffiliationsType.get(affiliationKey).toString());
    }
    sb.setLength(0);
    sb.append("select * FROM {h-schema}ra_affiliation ");
    sb.append("WHERE affiliation_key = :affiliation_key_in ");
    sb.append("AND registration_authority_key= :ra_type_key_in ");
    sb.append("AND end_date is null ");
    // Create the query, bind the parameters and set the return type.
    query = session.createSQLQuery(sb.toString());
    query.setParameter("affiliation_key_in", affiliationKey);
    query.setParameter("ra_type_key_in", getRegistrationAuthorityKey());

    it = query.list().iterator();
    if (!it.hasNext()) {
        affiliationKeyValid = false;
    }
    if (!affiliationKeyValid) {
        throw new CprException(ReturnType.DATA_CHANGE_EXCEPTION,
                AffiliationsType.get(affiliationKey).toString());
    }
    return affiliationKeyValid;
}