List of usage examples for org.hibernate.type StandardBasicTypes BOOLEAN
BooleanType BOOLEAN
To view the source code for org.hibernate.type StandardBasicTypes BOOLEAN.
Click Source Link
From source file:com.liferay.portal.dao.orm.hibernate.BooleanType.java
License:Open Source License
public Type[] getPropertyTypes() { return new Type[] { StandardBasicTypes.BOOLEAN }; }
From source file:com.liferay.portal.dao.orm.hibernate.BooleanType.java
License:Open Source License
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) throws SQLException { Boolean value = StandardBasicTypes.BOOLEAN.nullSafeGet(rs, names[0], session); if (value == null) { return DEFAULT_VALUE; } else {//from w w w .j av a 2 s. c o m return value; } }
From source file:com.vmware.sqlfire.hibernate.SQLFireDialect.java
License:Open Source License
public SQLFireDialect() { super();//from ww w . j av a 2s .c om LOG.info("SQLFireDialect for Hibernate 4 initialized."); registerFunction("concat", new DerbyConcatFunction()); registerFunction("trim", new AnsiTrimFunction()); registerFunction("value", new StandardSQLFunction("coalesce")); registerFunction("nvl", new NvlFunction()); registerFunction("groups", new StandardSQLFunction("GROUPS", StandardBasicTypes.STRING)); registerFunction("dsid", new StandardSQLFunction("DSID", StandardBasicTypes.STRING)); registerFunction("groupsintersection", new StandardSQLFunction("GROUPSINTERSECTION", StandardBasicTypes.STRING)); registerFunction("groupsintersect", new StandardSQLFunction("GROUPSINTERSECT", StandardBasicTypes.BOOLEAN)); registerFunction("groupsunion", new StandardSQLFunction("GROUPSUNION", StandardBasicTypes.STRING)); registerFunction("longint", new StandardSQLFunction("bigint", StandardBasicTypes.LONG)); registerFunction("int", new StandardSQLFunction("integer", StandardBasicTypes.INTEGER)); registerFunction("pi", new StandardSQLFunction("pi", StandardBasicTypes.DOUBLE)); registerFunction("random", new NoArgSQLFunction("random", StandardBasicTypes.DOUBLE)); registerFunction("rand", new StandardSQLFunction("rand", StandardBasicTypes.DOUBLE));// override registerFunction("sinh", new StandardSQLFunction("sinh", StandardBasicTypes.DOUBLE)); registerFunction("cosh", new StandardSQLFunction("cosh", StandardBasicTypes.DOUBLE)); registerFunction("tanh", new StandardSQLFunction("tanh", StandardBasicTypes.DOUBLE)); registerFunction("user", new NoArgSQLFunction("USER", StandardBasicTypes.STRING, false)); registerFunction("current_user", new NoArgSQLFunction("CURRENT_USER", StandardBasicTypes.STRING, false)); registerFunction("session_user", new NoArgSQLFunction("SESSION_USER", StandardBasicTypes.STRING, false)); registerFunction("current isolation", new NoArgSQLFunction("CURRENT ISOLATION", StandardBasicTypes.STRING, false)); registerFunction("current_role", new NoArgSQLFunction("CURRENT_ROLE", StandardBasicTypes.STRING, false)); registerFunction("current schema", new NoArgSQLFunction("CURRENT SCHEMA", StandardBasicTypes.STRING, false)); registerFunction("current sqlid", new NoArgSQLFunction("CURRENT SQLID", StandardBasicTypes.STRING, false)); registerFunction("xmlexists", new StandardSQLFunction("XMLEXISTS", StandardBasicTypes.NUMERIC_BOOLEAN)); registerFunction("xmlparse", new StandardSQLFunction("XMLPARSE", StandardBasicTypes.TEXT)); registerFunction("xmlquery", new StandardSQLFunction("XMLQUERY", StandardBasicTypes.STRING)); registerFunction("xmlserialize", new StandardSQLFunction("XMLSERIALIZE", StandardBasicTypes.STRING)); registerFunction("get_current_connection", new NoArgSQLFunction("GET_CURRENT_CONNECTION", StandardBasicTypes.BINARY, true)); registerFunction("identity_val_local", new NoArgSQLFunction("IDENTITY_VAL_LOCAL", StandardBasicTypes.BINARY, true)); }
From source file:com.vmware.sqlfire.hibernate.v4.v0.SQLFireDialect.java
License:Open Source License
public SQLFireDialect() { super();/*from ww w. ja v a 2 s .c om*/ LOG.info("SQLFireDialect for Hibernate 4.0 initialized."); registerFunction("concat", new DerbyConcatFunction()); registerFunction("trim", new AnsiTrimFunction()); registerFunction("value", new StandardSQLFunction("coalesce")); registerFunction("nvl", new NvlFunction()); registerFunction("groups", new StandardSQLFunction("GROUPS", StandardBasicTypes.STRING)); registerFunction("dsid", new StandardSQLFunction("DSID", StandardBasicTypes.STRING)); registerFunction("groupsintersection", new StandardSQLFunction("GROUPSINTERSECTION", StandardBasicTypes.STRING)); registerFunction("groupsintersect", new StandardSQLFunction("GROUPSINTERSECT", StandardBasicTypes.BOOLEAN)); registerFunction("groupsunion", new StandardSQLFunction("GROUPSUNION", StandardBasicTypes.STRING)); registerFunction("longint", new StandardSQLFunction("bigint", StandardBasicTypes.LONG)); registerFunction("int", new StandardSQLFunction("integer", StandardBasicTypes.INTEGER)); registerFunction("pi", new StandardSQLFunction("pi", StandardBasicTypes.DOUBLE)); registerFunction("random", new NoArgSQLFunction("random", StandardBasicTypes.DOUBLE)); registerFunction("rand", new StandardSQLFunction("rand", StandardBasicTypes.DOUBLE));// override registerFunction("sinh", new StandardSQLFunction("sinh", StandardBasicTypes.DOUBLE)); registerFunction("cosh", new StandardSQLFunction("cosh", StandardBasicTypes.DOUBLE)); registerFunction("tanh", new StandardSQLFunction("tanh", StandardBasicTypes.DOUBLE)); registerFunction("user", new NoArgSQLFunction("USER", StandardBasicTypes.STRING, false)); registerFunction("current_user", new NoArgSQLFunction("CURRENT_USER", StandardBasicTypes.STRING, false)); registerFunction("session_user", new NoArgSQLFunction("SESSION_USER", StandardBasicTypes.STRING, false)); registerFunction("current isolation", new NoArgSQLFunction("CURRENT ISOLATION", StandardBasicTypes.STRING, false)); registerFunction("current_role", new NoArgSQLFunction("CURRENT_ROLE", StandardBasicTypes.STRING, false)); registerFunction("current schema", new NoArgSQLFunction("CURRENT SCHEMA", StandardBasicTypes.STRING, false)); registerFunction("current sqlid", new NoArgSQLFunction("CURRENT SQLID", StandardBasicTypes.STRING, false)); registerFunction("xmlexists", new StandardSQLFunction("XMLEXISTS", StandardBasicTypes.NUMERIC_BOOLEAN)); registerFunction("xmlparse", new StandardSQLFunction("XMLPARSE", StandardBasicTypes.TEXT)); registerFunction("xmlquery", new StandardSQLFunction("XMLQUERY", StandardBasicTypes.STRING)); registerFunction("xmlserialize", new StandardSQLFunction("XMLSERIALIZE", StandardBasicTypes.STRING)); registerFunction("get_current_connection", new NoArgSQLFunction("GET_CURRENT_CONNECTION", StandardBasicTypes.BINARY, true)); registerFunction("identity_val_local", new NoArgSQLFunction("IDENTITY_VAL_LOCAL", StandardBasicTypes.BINARY, true)); }
From source file:com.wiiyaya.framework.provider.tools.hibernate.MySQL5InnoDBDialectPlus.java
License:Apache License
public MySQL5InnoDBDialectPlus() { super();//from ww w. j a v a 2 s . c o m registerFunction("regexp_like", new SQLFunctionTemplate(StandardBasicTypes.BOOLEAN, "?1 REGEXP ?2")); registerFunction("add_minutes", new SQLFunctionTemplate(StandardBasicTypes.TIMESTAMP, "date_add(?1, INTERVAL ?2 MINUTE)")); }
From source file:de.fhdo.terminologie.ws.search.ListCodeSystemConcepts.java
License:Apache License
public ListCodeSystemConceptsResponseType ListCodeSystemConcepts(ListCodeSystemConceptsRequestType parameter, org.hibernate.Session session, boolean noLimit, String ipAddress) { if (logger.isInfoEnabled()) logger.info("====== ListCodeSystemConcepts gestartet ======"); boolean createHibernateSession = (session == null); // Return-Informationen anlegen ListCodeSystemConceptsResponseType response = new ListCodeSystemConceptsResponseType(); response.setReturnInfos(new ReturnType()); // Parameter prfen if (validateParameter(parameter, response) == false) { logger.debug("Parameter falsch"); return response; // Fehler bei den Parametern }// w w w. jav a 2s . c om // Login-Informationen auswerten (gilt fr jeden Webservice) boolean loggedIn = false; AuthenticateInfos loginInfoType = new AuthenticateInfos(); if (parameter != null && parameter.getLoginToken() != null) { loginInfoType = Authorization.authenticate(ipAddress, parameter.getLoginToken()); loggedIn = loginInfoType != null; } if (logger.isDebugEnabled()) { logger.debug("Benutzer ist eingeloggt: " + loggedIn); logger.debug("isLookForward: " + parameter.isLookForward()); } int maxPageSizeUserSpecific = 10; //int maxPageSizeUserSpecific = 1; if (parameter.getPagingParameter() != null && parameter.getPagingParameter().getUserPaging() != null) { if (parameter.getPagingParameter().getUserPaging()) maxPageSizeUserSpecific = Integer.valueOf(parameter.getPagingParameter().getPageSize()); } else { maxPageSizeUserSpecific = -1; } // PagingInfo int maxPageSize = 100; // Gibt an, wieviele Treffer maximal zurckgegeben werden //Warum loggedIn hier? Das ergibt am Termbrowser folgenden Bug: Wenn man eingeloggt ist kann man sich keine HugeFlat Concept Liste mehr ansehen e.g. LOINC! => WrongValueException! if (noLimit)// || loggedIn) { maxPageSize = -1; } else { String maxPageSizeStr = SysParameter.instance().getStringValue("maxPageSize", null, null); try { maxPageSize = Integer.parseInt(maxPageSizeStr); } catch (Exception e) { LoggingOutput.outputException(e, this); } } boolean traverseConceptsToRoot = false; int maxPageSizeSearch = 5; // Gibt an, wieviele Treffer bei einer Suche maximal zurckgegeben werden if (parameter != null && parameter.getSearchParameter() != null && parameter.getSearchParameter().getTraverseConceptsToRoot() != null && parameter.getSearchParameter().getTraverseConceptsToRoot()) { traverseConceptsToRoot = true; String maxPageSizeSearchStr = SysParameter.instance().getStringValue("maxPageSizeSearch", null, null); if (parameter != null && parameter.getSearchParameter() != null) { if (maxPageSizeSearchStr != null && maxPageSizeSearchStr.length() > 0) { try { maxPageSizeSearch = Integer.parseInt(maxPageSizeSearchStr); } catch (Exception e) { LoggingOutput.outputException(e, this); } } } } //maxPageSizeSearch = 2; //maxPageSize = 2; logger.debug("maxPageSize: " + maxPageSizeSearch); logger.debug("maxPageSizeSearch: " + maxPageSizeSearch); logger.debug("traverseConceptsToRoot: " + traverseConceptsToRoot); try { //List<CodeSystemConcept> conceptList = null; String codeSystemVersionOid = ""; long codeSystemVersionId = 0; if (parameter.getCodeSystem().getCodeSystemVersions() != null && parameter.getCodeSystem().getCodeSystemVersions().size() > 0) { CodeSystemVersion csv = (CodeSystemVersion) parameter.getCodeSystem().getCodeSystemVersions() .toArray()[0]; if (csv.getVersionId() != null) codeSystemVersionId = csv.getVersionId(); if (csv.getOid() != null) codeSystemVersionOid = csv.getOid(); } // Lizenzen prfen boolean validLicence = false; if (codeSystemVersionOid != null && codeSystemVersionOid.length() > 0) validLicence = LicenceHelper.getInstance().userHasLicence(loginInfoType.getUserId(), codeSystemVersionOid); else validLicence = LicenceHelper.getInstance().userHasLicence(loginInfoType.getUserId(), codeSystemVersionId); if (validLicence == false) { response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.WARN); response.getReturnInfos().setStatus(ReturnType.Status.FAILURE); response.getReturnInfos().setMessage("Sie besitzen keine gltige Lizenz fr dieses Vokabular!"); return response; } else logger.debug("Lizenz fr Vokabular vorhanden!"); // Hibernate-Block, Session ffnen //org.hibernate.Session hb_session = HibernateUtil.getSessionFactory().openSession(); org.hibernate.Session hb_session = null; //org.hibernate.Transaction tx = null; if (createHibernateSession) { hb_session = HibernateUtil.getSessionFactory().openSession(); //hb_session.getTransaction().begin(); //tx = hb_session.beginTransaction(); } else { hb_session = session; //hb_session.getTransaction().begin(); } try // 2. try-catch-Block zum Abfangen von Hibernate-Fehlern { if (codeSystemVersionOid != null && codeSystemVersionOid.length() > 0) { logger.debug("get csv-id from oid"); // get csv-id from oid String hql = "from CodeSystemVersion csv" + " where csv.oid=:oid"; Query q = hb_session.createQuery(hql); q.setString("oid", codeSystemVersionOid); List<CodeSystemVersion> csvList = q.list(); if (csvList != null && csvList.size() > 0) { codeSystemVersionId = csvList.get(0).getVersionId(); logger.debug("found versionId from oid: " + codeSystemVersionId); } else { response.setCodeSystemEntity(new LinkedList<CodeSystemEntity>()); response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.WARN); response.getReturnInfos().setStatus(ReturnType.Status.FAILURE); response.getReturnInfos().setMessage("Codesystem with given OID can't be found."); response.getReturnInfos().setCount(0); return response; } } if (codeSystemVersionId == 0 && parameter.getCodeSystem().getId() != null) { // Aktuelle Version des Vokabulars ermitteln long codeSystemId = parameter.getCodeSystem().getId(); CodeSystem cs = (CodeSystem) hb_session.get(CodeSystem.class, codeSystemId); if (cs != null) codeSystemVersionId = CodeSystemHelper.getCurrentVersionId(cs); } // HQL erstellen // Besonderheit hier: es drfen keine Werte nachgeladen werden // Beim Abruf eines ICD wre dieses sehr inperformant, da er fr // jeden Eintrag sonst nachladen wrde /* SELECT * FROM code_system_concept csc JOIN code_system_entity_version csev ON csc.codeSystemEntityVersionId=csev.versionId JOIN code_system_entity cse ON csev.versionId=cse.id JOIN code_system_version_entity_membership csvem ON cse.id=csvem.codeSystemEntityId LEFT JOIN code_system_concept_translation csct ON csct.codeSystemEntityVersionId=csc.codeSystemEntityVersionId WHERE csvem.codeSystemVersionId=10 */ String languageCd = ""; /*SELECT * FROM (SELECT csc.*, csev.*, csvem.isAxis, csvem.isMainClass, cse.* FROM code_system_concept csc JOIN code_system_entity_version csev ON csc.codeSystemEntityVersionId=csev.versionId JOIN code_system_entity cse ON csev.versionId=cse.id JOIN code_system_version_entity_membership csvem ON cse.id=csvem.codeSystemEntityId WHERE csvem.codeSystemVersionId=10 LIMIT 2) csc2 LEFT JOIN code_system_concept_translation csct ON csct.codeSystemEntityVersionId=csc2.codeSystemEntityVersionId*/ // //String sql = "SELECT * FROM (SELECT csc.*, csev.*, csvem.isAxis, csvem.isMainClass, cse.* FROM code_system_concept csc" String sql = "SELECT * FROM (SELECT csc.*, csev.*, csvem.isAxis, csvem.isMainClass, cse.*, csct.term translation_term, csct.termAbbrevation translation_termAbbrevation, csct.description translation_description, csct.languageCd translation_languageCd, csct.id translation_id " + " FROM code_system_concept csc" + " JOIN code_system_entity_version csev ON csc.codeSystemEntityVersionId=csev.versionId" + " JOIN code_system_entity cse ON csev.codeSystemEntityId=cse.id" + " JOIN code_system_version_entity_membership csvem ON cse.id=csvem.codeSystemEntityId" + " LEFT JOIN code_system_concept_translation csct ON csct.codeSystemEntityVersionId=csc.codeSystemEntityVersionId AND languageCd=:languageCd" //+ " LEFT JOIN code_system_concept_translation csct ON csct.codeSystemEntityVersionId=csc.codeSystemEntityVersionId AND_LANGUAGE_TERM" + " WHERE_TEIL) csc2" //+ " LEFT JOIN code_system_concept_translation csct ON csct.codeSystemEntityVersionId=csc2.codeSystemEntityVersionId"; + " LEFT JOIN code_system_entity_version_association cseva1 ON cseva1.codeSystemEntityVersionId1=csc2.versionId" + " LEFT JOIN code_system_entity_version_association cseva2 ON cseva2.codeSystemEntityVersionId2=csc2.versionId"; String sqlCount = "SELECT COUNT(*) FROM code_system_concept csc" + " JOIN code_system_entity_version csev ON csc.codeSystemEntityVersionId=csev.versionId" + " JOIN code_system_entity cse ON csev.versionId=cse.id" + " JOIN code_system_version_entity_membership csvem ON cse.id=csvem.codeSystemEntityId" + " WHERE_TEIL"; /*String sql = " FROM code_system_concept csc" + " JOIN code_system_entity_version csev ON csc.codeSystemEntityVersionId=csev.versionId" + " JOIN code_system_entity cse ON csev.versionId=cse.id" + " JOIN code_system_version_entity_membership csvem ON cse.id=csvem.codeSystemEntityId" + " LEFT JOIN code_system_concept_translation csct ON csct.codeSystemEntityVersionId=csc.codeSystemEntityVersionId";*/ //+ " WHERE csvem.codeSystemVersionId=:codeSystemVersionId" //+ " GROUP BY csc.code" //+ " ORDER BY csc.code"; // 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(); parameterHelper.addParameter("", "csvem.codeSystemVersionId", codeSystemVersionId); if (parameter != null && parameter.getCodeSystemEntity() != null) { if (parameter.getCodeSystemEntity().getCodeSystemVersionEntityMemberships() != null && parameter.getCodeSystemEntity().getCodeSystemVersionEntityMemberships().size() > 0) { CodeSystemVersionEntityMembership ms = (CodeSystemVersionEntityMembership) parameter .getCodeSystemEntity().getCodeSystemVersionEntityMemberships().toArray()[0]; parameterHelper.addParameter("csvem.", "isAxis", ms.getIsAxis()); parameterHelper.addParameter("csvem.", "isMainClass", ms.getIsMainClass()); } if (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(); } } } } } /*if(languageCd.length() == 0) sql = sql.replaceAll("AND_LANGUAGE_TERM", ""); else sql = sql.replaceAll("AND_LANGUAGE_TERM", "AND languageCd=:languageCd");*/ if (loggedIn == false) { parameterHelper.addParameter("csev.", "statusVisibility", Definitions.STATUS_CODES.ACTIVE.getCode()); } // Parameter hinzufgen (immer mit AND verbunden) // Gesamt-Anzahl lesen String where = parameterHelper.getWhere(""); //sqlCount = "SELECT COUNT(DISTINCT cse.id) FROM " + sqlCount.replaceAll("WHERE_TEIL", where); sqlCount = sqlCount.replaceAll("WHERE_TEIL", where); //q.addScalar("csc.code", Hibernate.TEXT); // Index: 0 logger.debug("SQL-Count: " + sqlCount); SQLQuery qCount = hb_session.createSQLQuery(sqlCount); parameterHelper.applySQLParameter(qCount); BigInteger anzahlGesamt = (BigInteger) qCount.uniqueResult(); logger.debug("Anzahl Gesamt: " + anzahlGesamt.longValue()); if (anzahlGesamt.longValue() > 0) { // Suche begrenzen int pageSize = -1; int pageIndex = 0; boolean allEntries = false; if (parameter != null && parameter.getPagingParameter() != null) { logger.debug("Search-Parameter angegeben"); if (parameter.getPagingParameter().isAllEntries() != null && parameter.getPagingParameter().isAllEntries().booleanValue() == true) { if (loggedIn) allEntries = true; } if (parameter.getPagingParameter().getPageSize() != null) pageSize = Integer.valueOf(parameter.getPagingParameter().getPageSize()); if (parameter.getPagingParameter().getPageIndex() != null) pageIndex = parameter.getPagingParameter().getPageIndex(); } // MaxResults mit Wert aus SysParam prfen if (traverseConceptsToRoot) { if (pageSize < 0 || (maxPageSizeSearch > 0 && pageSize > maxPageSizeSearch)) pageSize = maxPageSizeSearch; } else { if (pageSize < 0 || (maxPageSize > 0 && pageSize > maxPageSize)) pageSize = maxPageSize; } if (pageIndex < 0) pageIndex = 0; logger.debug("pageIndex: " + pageIndex); logger.debug("pageSize: " + pageSize); /*String 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 sortStr = " ORDER BY 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 += " term"; } else { sortStr += " code"; } if (parameter.getSortingParameter().getSortDirection() != null && parameter.getSortingParameter() .getSortDirection() == SortingType.SortDirection.DESCENDING) { sortStr += " desc"; } } } /*String where_all = where + sortStr; if (pageSize > 0 && allEntries == false) { where_all += " LIMIT " + (pageIndex * pageSize) + "," + pageSize; } sql = sql.replaceAll("WHERE_TEIL", where_all);*/ if (pageSize > 0 && allEntries == false) { sortStr += " LIMIT " + (pageIndex * pageSize) + "," + pageSize; } sql = sql.replaceAll("WHERE_TEIL", where); sql += sortStr; int anzahl = 0; //logger.debug("SQL: " + sql); // Query erstellen SQLQuery q = hb_session.createSQLQuery(sql); q.addScalar("csc2.code", StandardBasicTypes.TEXT); // Index: 0 q.addScalar("csc2.term", StandardBasicTypes.TEXT); q.addScalar("csc2.termAbbrevation", StandardBasicTypes.TEXT); q.addScalar("csc2.description", StandardBasicTypes.TEXT); q.addScalar("csc2.isPreferred", StandardBasicTypes.BOOLEAN); q.addScalar("csc2.codeSystemEntityVersionId", StandardBasicTypes.LONG); q.addScalar("csc2.effectiveDate", StandardBasicTypes.TIMESTAMP); // Index: 6 q.addScalar("csc2.insertTimestamp", StandardBasicTypes.TIMESTAMP); q.addScalar("csc2.isLeaf", StandardBasicTypes.BOOLEAN); q.addScalar("csc2.majorRevision", StandardBasicTypes.INTEGER); q.addScalar("csc2.minorRevision", StandardBasicTypes.INTEGER); q.addScalar("csc2.statusVisibility", StandardBasicTypes.INTEGER); q.addScalar("csc2.statusVisibilityDate", StandardBasicTypes.TIMESTAMP); q.addScalar("csc2.versionId", StandardBasicTypes.LONG); q.addScalar("csc2.codeSystemEntityId", StandardBasicTypes.LONG); q.addScalar("csc2.id", StandardBasicTypes.LONG); // Index: 15 q.addScalar("csc2.currentVersionId", StandardBasicTypes.LONG); q.addScalar("csc2.isAxis", StandardBasicTypes.BOOLEAN); // Index: 17 q.addScalar("csc2.isMainClass", StandardBasicTypes.BOOLEAN); q.addScalar("translation_term", StandardBasicTypes.TEXT); // Index: 19 q.addScalar("translation_termAbbrevation", StandardBasicTypes.TEXT); q.addScalar("translation_languageCd", StandardBasicTypes.TEXT); q.addScalar("translation_description", StandardBasicTypes.TEXT); q.addScalar("translation_id", StandardBasicTypes.LONG); q.addScalar("cseva1.codeSystemEntityVersionId1", StandardBasicTypes.LONG); // Index: 24 q.addScalar("cseva1.codeSystemEntityVersionId2", StandardBasicTypes.LONG); q.addScalar("cseva1.leftId", StandardBasicTypes.LONG); q.addScalar("cseva1.associationTypeId", StandardBasicTypes.LONG); q.addScalar("cseva1.associationKind", StandardBasicTypes.INTEGER); q.addScalar("cseva1.status", StandardBasicTypes.INTEGER); q.addScalar("cseva1.statusDate", StandardBasicTypes.TIMESTAMP); q.addScalar("cseva1.insertTimestamp", StandardBasicTypes.TIMESTAMP); q.addScalar("csc2.meaning", StandardBasicTypes.TEXT); //Index: 32 q.addScalar("csc2.hints", StandardBasicTypes.TEXT); q.addScalar("csc2.statusDeactivated", StandardBasicTypes.INTEGER); // Index: 34 q.addScalar("csc2.statusDeactivatedDate", StandardBasicTypes.TIMESTAMP); q.addScalar("csc2.statusWorkflow", StandardBasicTypes.INTEGER); q.addScalar("csc2.statusWorkflowDate", StandardBasicTypes.TIMESTAMP); q.addScalar("cseva2.codeSystemEntityVersionId1", StandardBasicTypes.LONG); // Index: 38 q.addScalar("cseva2.codeSystemEntityVersionId2", StandardBasicTypes.LONG); q.addScalar("cseva2.leftId", StandardBasicTypes.LONG); q.addScalar("cseva2.associationTypeId", StandardBasicTypes.LONG); q.addScalar("cseva2.associationKind", StandardBasicTypes.INTEGER); q.addScalar("cseva2.status", StandardBasicTypes.INTEGER); q.addScalar("cseva2.statusDate", StandardBasicTypes.TIMESTAMP); q.addScalar("cseva2.insertTimestamp", StandardBasicTypes.TIMESTAMP); parameterHelper.applySQLParameter(q); //if(languageCd.length() > 0) q.setString("languageCd", languageCd); response.setCodeSystemEntity(new LinkedList<CodeSystemEntity>()); logger.debug("SQL: " + q.getQueryString()); List conceptList = (List) q.list(); Iterator it = conceptList.iterator(); long lastCodeSystemEntityVersionId = 0; CodeSystemEntity cse = new CodeSystemEntity(); CodeSystemEntityVersion csev = new CodeSystemEntityVersion(); CodeSystemConcept csc = new CodeSystemConcept(); CodeSystemVersionEntityMembership csvem = new CodeSystemVersionEntityMembership(); boolean fertig = false; 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 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(); // 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(new String((char[])item[2])); 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[32] != null) csc.setMeaning(item[32].toString()); if (item[33] != null) csc.setHints(item[33].toString()); // Entity Version if (item[6] != null) csev.setEffectiveDate(DateHelper.getDateFromObject(item[6])); if (item[7] != null) csev.setInsertTimestamp(DateHelper.getDateFromObject(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(DateHelper.getDateFromObject(item[12])); if (item[13] != null) csev.setVersionId((Long) item[13]); if (item[34] != null) csev.setStatusDeactivated((Integer) item[34]); if (item[35] != null) csev.setStatusDeactivatedDate(DateHelper.getDateFromObject(item[35])); if (item[36] != null) csev.setStatusWorkflow((Integer) item[36]); if (item[37] != null) csev.setStatusWorkflowDate(DateHelper.getDateFromObject(item[37])); // Code System Entity if (item[15] != null) cse.setId((Long) item[15]); if (item[16] != null) cse.setCurrentVersionId((Long) item[16]); // Entity Membership if (item[17] != null) csvem.setIsAxis((Boolean) item[17]); if (item[18] != null) csvem.setIsMainClass((Boolean) item[18]); // Translation addTranslationToConcept(csc, item); // Assoziation if (parameter.isLookForward()) addAssociationToEntityVersion(csev, item); if (traverseConceptsToRoot) { // Alle Elemente bis zum Root ermitteln (fr Suche) TraverseConceptToRoot traverse = new TraverseConceptToRoot(); TraverseConceptToRootRequestType requestTraverse = new TraverseConceptToRootRequestType(); requestTraverse.setLoginToken(parameter.getLoginToken()); requestTraverse.setCodeSystemEntity(new CodeSystemEntity()); CodeSystemEntityVersion csevRequest = new CodeSystemEntityVersion(); csevRequest.setVersionId(csev.getVersionId()); requestTraverse.getCodeSystemEntity() .setCodeSystemEntityVersions(new HashSet<CodeSystemEntityVersion>()); requestTraverse.getCodeSystemEntity().getCodeSystemEntityVersions().add(csevRequest); requestTraverse.setDirectionToRoot(true); //TraverseConceptToRootResponseType responseTraverse = traverse.TraverseConceptToRoot(requestTraverse, hb_session); // die Session bergeben, damit diese nicht geschlossen wird TraverseConceptToRootResponseType responseTraverse = traverse .TraverseConceptToRoot(requestTraverse, null); //logger.debug("responseTraverse: " + responseTraverse.getReturnInfos().getMessage()); if (responseTraverse.getReturnInfos().getStatus() == ReturnType.Status.OK) { if (csev.getCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1() == null) { csev.setCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1( responseTraverse.getCodeSystemEntityVersionRoot() .getCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1()); } else { csev.getCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1() .addAll(responseTraverse.getCodeSystemEntityVersionRoot() .getCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1()); } } } if (parameter.isLoadMetadata() != null && parameter.isLoadMetadata().booleanValue()) { String hql = "from CodeSystemMetadataValue mv " + " join fetch mv.metadataParameter mp " + " where codeSystemEntityVersionId=:csev_id"; Query query = hb_session.createQuery(hql); query.setLong("csev_id", csev.getVersionId()); csev.setCodeSystemMetadataValues(new HashSet<CodeSystemMetadataValue>(query.list())); // remove circle problems for (CodeSystemMetadataValue mv : csev.getCodeSystemMetadataValues()) { mv.setCodeSystemEntityVersion(null); mv.getMetadataParameter().setCodeSystem(null); mv.getMetadataParameter().setValueSet(null); mv.getMetadataParameter().setValueSetMetadataValues(null); mv.getMetadataParameter().setCodeSystemMetadataValues(null); mv.getMetadataParameter().setDescription(null); mv.getMetadataParameter().setMetadataParameterType(null); } } if (parameter.isLoadTranslation() != null && parameter.isLoadTranslation().booleanValue()) { String hql = "from CodeSystemConceptTranslation csct " + " where codeSystemEntityVersionId=:csev_id"; //+ " order by csct.languageCd"; Query query = hb_session.createQuery(hql); query.setLong("csev_id", csev.getVersionId()); csc.setCodeSystemConceptTranslations( new HashSet<CodeSystemConceptTranslation>(query.list())); // remove circle problems for (CodeSystemConceptTranslation trans : csc.getCodeSystemConceptTranslations()) { trans.setCodeSystemConcept(null); } } //logger.debug(csc.getCode()); //logger.debug("Type: " + csc.getClass().getCanonicalName()); /*Object[] o = (Object[]) csc; for(int i=0;i<o.length;++i) { //logger.debug(i + ": " + o.toString()); if(o[i] != null) { logger.debug(i + ": " + o[i].toString()); logger.debug(i + ": " + o[i].getClass().getCanonicalName()); } else logger.debug(i + ": null"); //for(int j=0;j<) }*/ csev.setCodeSystemConcepts(new HashSet<CodeSystemConcept>()); csev.getCodeSystemConcepts().add(csc); 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++; } // Treffermenge prfen // Paging wird aktiviert if (anzahlGesamt.longValue() > maxPageSize) { response.setPagingInfos(new PagingResultType()); response.getPagingInfos().setMaxPageSize(maxPageSize); response.getPagingInfos().setPageIndex(pageIndex); response.getPagingInfos().setPageSize(String.valueOf(pageSize)); response.getPagingInfos().setCount(anzahlGesamt.intValue()); if (parameter != null && parameter.getPagingParameter() != null) { response.getPagingInfos().setMessage( "Paging wurde aktiviert, da die Treffermenge grer ist als die maximale Seitengre."); } } else { if ((maxPageSizeUserSpecific != -1) && anzahlGesamt.longValue() > maxPageSizeUserSpecific) { response.setPagingInfos(new PagingResultType()); response.getPagingInfos().setMaxPageSize(maxPageSizeUserSpecific); response.getPagingInfos().setPageIndex(pageIndex); response.getPagingInfos().setPageSize(String.valueOf(maxPageSizeUserSpecific)); response.getPagingInfos().setCount(anzahlGesamt.intValue()); if (parameter != null && parameter.getPagingParameter() != null) { response.getPagingInfos().setMessage( "Paging wurde aktiviert, da popUpSearchCS spezifische Seitenanzahl."); } } } // Status an den Aufrufer weitergeben response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.INFO); response.getReturnInfos().setStatus(ReturnType.Status.OK); response.getReturnInfos().setMessage("Konzepte erfolgreich gelesen, Anzahl: " + anzahl); response.getReturnInfos().setCount(anzahl); } else { response.setCodeSystemEntity(new LinkedList<CodeSystemEntity>()); response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.INFO); response.getReturnInfos().setStatus(ReturnType.Status.OK); response.getReturnInfos().setMessage("Keine Konzepte fr die Filterkriterien vorhanden"); response.getReturnInfos().setCount(0); } /*String hql = "select distinct csc from CodeSystemConcept csc"; hql += " join fetch csc.codeSystemEntityVersion csev"; hql += " join fetch csev.codeSystemEntity cse"; hql += " left outer join fetch csc.codeSystemConceptTranslations csct"; hql += " join fetch cse.codeSystemVersionEntityMemberships csvem"; //if (parameter.isLookForward()) //{ // hql += " join fetch csev.codeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1 ass1"; // hql += " join fetch csev.codeSystemEntityVersionAssociationsForCodeSystemEntityVersionId2 ass2"; //} // 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(); parameterHelper.addParameter("", "codeSystemVersionId", codeSystemVersionId); if (parameter != null && parameter.getCodeSystemEntity() != null) { if (parameter.getCodeSystemEntity().getCodeSystemVersionEntityMemberships() != null && parameter.getCodeSystemEntity().getCodeSystemVersionEntityMemberships().size() > 0) { CodeSystemVersionEntityMembership ms = (CodeSystemVersionEntityMembership) parameter.getCodeSystemEntity().getCodeSystemVersionEntityMemberships().toArray()[0]; parameterHelper.addParameter("csvem.", "isAxis", ms.getIsAxis()); parameterHelper.addParameter("csvem.", "isMainClass", ms.getIsMainClass()); } if (parameter.getCodeSystemEntity().getCodeSystemEntityVersions() != null && parameter.getCodeSystemEntity().getCodeSystemEntityVersions().size() > 0) { CodeSystemEntityVersion csev = (CodeSystemEntityVersion) parameter.getCodeSystemEntity().getCodeSystemEntityVersions().toArray()[0]; parameterHelper.addParameter("csev.", "statusDate", csev.getStatusDate()); 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.getLanguageId() > 0) parameterHelper.addParameter("csct.", "languageId", csct.getLanguageId()); } } } } if (loggedIn == false) { parameterHelper.addParameter("csev.", "status", Definitions.STATUS_CODES.ACTIVE.getCode()); } // Parameter hinzufgen (immer mit AND verbunden) String where = parameterHelper.getWhere(""); hql += where; // immer neueste Version lesen hql += " AND csev.id=cse.currentVersionId"; hql += " ORDER BY csc.code"; // Suche begrenzen int pageSize = -1; int pageIndex = 0; boolean allEntries = false; if (parameter != null && parameter.getPagingParameter() != null) { // vorher aber noch die Gesamtanzahl berechnen //Integer count = (Integer) hb_session.createQuery("select count(*) from ....").uniqueResult(); if (parameter.getPagingParameter().isAllEntries() != null && parameter.getPagingParameter().isAllEntries().booleanValue() == true) { if (loggedIn) allEntries = true; } pageSize = parameter.getPagingParameter().getPageSize(); pageIndex = parameter.getPagingParameter().getPageIndex(); } // MaxResults mit Wert aus SysParam prfen if (traverseConceptsToRoot) { if (pageSize < 0 || (maxPageSizeSearch > 0 && pageSize > maxPageSizeSearch)) pageSize = maxPageSizeSearch; } else { if (pageSize < 0 || (maxPageSize > 0 && pageSize > maxPageSize)) pageSize = maxPageSize; } if (pageIndex < 0) pageIndex = 0; // Gesamt-Anzahl lesen String hqlCount = "select count(term) from CodeSystemConcept csc"; hqlCount += " join csc.codeSystemEntityVersion csev"; hqlCount += " join csev.codeSystemEntity cse"; hqlCount += " join cse.codeSystemVersionEntityMemberships csvem"; hqlCount += where; //hql = hql.replace("distinct csc", "count(term)"); logger.debug("HQL-Count: " + hqlCount); org.hibernate.Query q = hb_session.createQuery(hqlCount); // Die Parameter knnen erst hier gesetzt werden (bernimmt Helper) parameterHelper.applyParameter(q); long anzahlGesamt = (Long) q.uniqueResult(); // Anzahl zhlen Datenbank-Aufruf durchfhren //int anzahlGesamt = q.list().size(); //int anzahlGesamt = 100; // TODO Gesamt-Anzahl herausbekommen logger.debug("Anzahl Gesamt: " + anzahlGesamt); logger.debug("HQL: " + hql); // Query erstellen q = hb_session.createQuery(hql); // Die Parameter knnen erst hier gesetzt werden (bernimmt Helper) parameterHelper.applyParameter(q); //conceptList = (java.util.List<CodeSystemConcept>) q.list(); if (anzahlGesamt > 0) { //hb_session.setFlushMode(FlushMode.AUTO); ScrollableResults scrollResults = q.scroll(); int itCount = 0; if (scrollResults != null) { java.util.List<CodeSystemEntity> entityList = new LinkedList<CodeSystemEntity>(); if (pageIndex > 0 && allEntries == false && anzahlGesamt > 0) { // Vorspulen //if(pageSize * pageIndex < anzahlGesamt) // scrollResults.setRowNumber(pageSize * pageIndex); for (int i = 0; i < pageSize * pageIndex && i < anzahlGesamt; ++i) { if (scrollResults.next() == false) break; if (i % 50 == 0) { // wichtig, da Speicher sonst voll luft hb_session.flush(); hb_session.clear(); } } } //Iterator<CodeSystemConcept> iterator = conceptList.iterator(); //while (iterator.hasNext()) try { while (scrollResults.next()) { if (itCount >= pageSize && allEntries == false) break; if (itCount % 50 == 0) { // wichtig, da Speicher sonst voll luft //hb_session.flush(); hb_session.clear(); } itCount++; //CodeSystemConcept csc = iterator.next(); CodeSystemConcept csc = (CodeSystemConcept) scrollResults.get(0); // neues Entity generieren, damit nicht nachgeladen werden muss CodeSystemEntity entity = csc.getCodeSystemEntityVersion().getCodeSystemEntity(); CodeSystemEntityVersion csev = csc.getCodeSystemEntityVersion(); csev.setCodeSystemEntity(null); if (parameter.isLookForward()) { // Verbindungen suchen if (csev.getCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId2() != null) { for (CodeSystemEntityVersionAssociation ass : csev.getCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId2()) { ass.setCodeSystemEntityVersionByCodeSystemEntityVersionId1(null); ass.setCodeSystemEntityVersionByCodeSystemEntityVersionId2(null); ass.setAssociationType(null); } } if (csev.getCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1() != null) { for (CodeSystemEntityVersionAssociation ass : csev.getCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1()) { ass.setCodeSystemEntityVersionByCodeSystemEntityVersionId1(null); ass.setCodeSystemEntityVersionByCodeSystemEntityVersionId2(null); ass.setAssociationType(null); } } } else { if (traverseConceptsToRoot) { // Alle Elemente bis zum Root ermitteln (fr Suche) TraverseConceptToRoot traverse = new TraverseConceptToRoot(); TraverseConceptToRootRequestType requestTraverse = new TraverseConceptToRootRequestType(); requestTraverse.setLoginToken(parameter.getLoginToken()); requestTraverse.setCodeSystemEntity(new CodeSystemEntity()); CodeSystemEntityVersion csevRequest = new CodeSystemEntityVersion(); csevRequest.setVersionId(csev.getVersionId()); requestTraverse.getCodeSystemEntity().setCodeSystemEntityVersions(new HashSet<CodeSystemEntityVersion>()); requestTraverse.getCodeSystemEntity().getCodeSystemEntityVersions().add(csevRequest); requestTraverse.setDirectionToRoot(true); requestTraverse.setReadEntityDetails(false); TraverseConceptToRootResponseType responseTraverse = traverse.TraverseConceptToRoot(requestTraverse, hb_session); // die Session bergeben, damit diese nicht geschlossen wird //logger.debug("responseTraverse: " + responseTraverse.getReturnInfos().getMessage()); if (responseTraverse.getReturnInfos().getStatus() == ReturnType.Status.OK) { csev.setCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1( responseTraverse.getCodeSystemEntityVersionRoot().getCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1()); } else { csev.setCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1(null); } } else { csev.setCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId1(null); } csev.setCodeSystemEntityVersionAssociationsForCodeSystemEntityVersionId2(null); } csev.setCodeSystemMetadataValues(null); csev.setConceptValueSetMemberships(null); csev.setPropertyVersions(null); csev.setAssociationTypes(null); csc.setCodeSystemEntityVersion(null); logger.debug("Akt Code: " + csc.getCode() + ", " + csc.getTerm()); //Translations if (csc.getCodeSystemConceptTranslations() != null) { Iterator<CodeSystemConceptTranslation> itTrans = csc.getCodeSystemConceptTranslations().iterator(); while (itTrans.hasNext()) { CodeSystemConceptTranslation csct = itTrans.next(); csct.setCodeSystemConcept(null); } } csev.setCodeSystemConcepts(new HashSet<CodeSystemConcept>()); csev.getCodeSystemConcepts().add(csc); entity.setCodeSystemEntityVersions(new HashSet<CodeSystemEntityVersion>()); entity.getCodeSystemEntityVersions().add(csev); // M:N Verbindung zur Vokabular-Version (ohne nachladen) CodeSystemVersionEntityMembership ms = (CodeSystemVersionEntityMembership) entity.getCodeSystemVersionEntityMemberships().toArray()[0]; ms.setCodeSystemVersion(null); ms.setCodeSystemEntity(null); ms.setId(null); entity.setCodeSystemVersionEntityMemberships(new HashSet<CodeSystemVersionEntityMembership>()); entity.getCodeSystemVersionEntityMemberships().add(ms); entityList.add(entity); } } catch (org.hibernate.exception.GenericJDBCException ex) { logger.debug("Keine Eintraege"); ex.printStackTrace(); } int anzahl = 0; if (entityList != null) anzahl = entityList.size(); response.setCodeSystemEntity(entityList); // Treffermenge prfen if (anzahlGesamt > anzahl) { // Paging wird aktiviert response.setPagingInfos(new PagingResultType()); response.getPagingInfos().setMaxPageSize(maxPageSize); response.getPagingInfos().setPageIndex(pageIndex); response.getPagingInfos().setPageSize(pageSize); response.getPagingInfos().setCount((int) anzahlGesamt); if (parameter != null && parameter.getPagingParameter() != null) { response.getPagingInfos().setMessage("Paging wurde aktiviert, da die Treffermenge grer ist als die maximale Seitengre."); } //response.getPagingInfos().setMessage(); } //response.setPagingInfos(null); // Status an den Aufrufer weitergeben response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.INFO); response.getReturnInfos().setStatus(ReturnType.Status.OK); response.getReturnInfos().setMessage("Konzepte erfolgreich gelesen, Anzahl: " + anzahl); response.getReturnInfos().setCount(anzahl); } } else { response.setCodeSystemEntity(new LinkedList<CodeSystemEntity>()); response.getReturnInfos().setOverallErrorCategory(ReturnType.OverallErrorCategory.INFO); response.getReturnInfos().setStatus(ReturnType.Status.OK); response.getReturnInfos().setMessage("Keine Konzepte fr die Filterkriterien vorhanden"); response.getReturnInfos().setCount(0); }*/ // Hibernate-Block wird in 'finally' geschlossen, erst danach // Auswertung der Daten // Achtung: hiernach knnen keine Tabellen/Daten mehr nachgeladen werden //if(createHibernateSession) //hb_session.getTransaction().commit(); } catch (Exception e) { //if(createHibernateSession) //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 'ListCodeSystemConcepts', Hibernate: " + e.getLocalizedMessage()); LoggingOutput.outputException(e, this); } finally { // Transaktion abschlieen 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 'ListCodeSystemConcepts': " + e.getLocalizedMessage()); LoggingOutput.outputException(e, this); } return response; }
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 ww w.j av a 2 s . c o 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:nl.strohalm.cyclos.dao.members.ReferenceDAOImpl.java
License:Open Source License
public List<PaymentAwaitingFeedbackDTO> searchPaymentsAwaitingFeedback( final PaymentsAwaitingFeedbackQuery query) { final ResultType resultType = query.getResultType(); final PageParameters pageParameters = query.getPageParameters(); final boolean countOnly = resultType == ResultType.PAGE && pageParameters != null && pageParameters.getMaxResults() == 0; // There are 2 tables which contains payments that can have feedback: transfers and scheduled payments // As we need an union, we need a native SQL final Member member = query.getMember(); Boolean expired = query.getExpired(); final StringBuilder sql = new StringBuilder(); sql.append(" select "); if (countOnly) { sql.append(" count(*) as row_count"); } else {// w w w .j ava 2s . c o m sql.append(" * "); } sql.append(" from ( "); { sql.append( " select t.id, t.type_id as transferTypeId, false as scheduled, t.date, t.amount, tm.id as memberId, tm.name as memberName, ta.owner_name as memberUsername"); sql.append( " from transfers t inner join transfer_types tt on t.type_id = tt.id inner join accounts ta on t.to_account_id = ta.id inner join members tm on ta.member_id = tm.id"); if (member != null) { sql.append(" inner join accounts a on t.from_account_id = a.id"); } sql.append(" left join refs tf on tf.transfer_id = t.id"); sql.append(" where tt.requires_feedback = true"); sql.append(" and t.date >= tt.feedback_enabled_since"); sql.append(" and t.parent_id is null"); sql.append(" and t.chargeback_of_id is null"); sql.append(" and t.scheduled_payment_id is null"); sql.append(" and t.process_date is not null"); if (expired != null) { sql.append(" and t.feedback_deadline " + (expired ? "<" : ">=") + " now()"); } sql.append(" and tf.id is null"); if (member != null) { sql.append(" and a.member_id = :memberId"); } sql.append(" union "); sql.append(" select sp.id, sp.type_id, true, sp.date, sp.amount, tm.id, tm.name, ta.owner_name"); sql.append( " from scheduled_payments sp inner join transfer_types tt on sp.type_id = tt.id inner join accounts ta on sp.to_account_id = ta.id inner join members tm on ta.member_id = tm.id"); if (member != null) { sql.append(" inner join accounts a on sp.from_account_id = a.id"); } sql.append(" left join refs tf on tf.scheduled_payment_id = sp.id"); sql.append(" where tt.requires_feedback = true"); if (expired != null) { sql.append(" and sp.feedback_deadline " + (expired ? "<" : ">=") + " now()"); } sql.append(" and sp.date >= tt.feedback_enabled_since"); sql.append(" and tf.id is null"); if (member != null) { sql.append(" and a.member_id = :memberId"); } } sql.append(") as awaiting "); if (!countOnly) { sql.append("order by date"); } SQLQuery sqlQuery = getSession().createSQLQuery(sql.toString()); if (member != null) { sqlQuery.setLong("memberId", member.getId()); } if (countOnly) { // Handle the special case for count only sqlQuery.addScalar("row_count", StandardBasicTypes.INTEGER); int count = ((Number) sqlQuery.uniqueResult()).intValue(); return new PageImpl<PaymentAwaitingFeedbackDTO>(pageParameters, count, Collections.<PaymentAwaitingFeedbackDTO>emptyList()); } else { // Execute the search sqlQuery.addScalar("id", StandardBasicTypes.LONG); sqlQuery.addScalar("transferTypeId", StandardBasicTypes.LONG); sqlQuery.addScalar("scheduled", StandardBasicTypes.BOOLEAN); sqlQuery.addScalar("date", StandardBasicTypes.CALENDAR); sqlQuery.addScalar("amount", StandardBasicTypes.BIG_DECIMAL); sqlQuery.addScalar("memberId", StandardBasicTypes.LONG); sqlQuery.addScalar("memberName", StandardBasicTypes.STRING); sqlQuery.addScalar("memberUsername", StandardBasicTypes.STRING); getHibernateQueryHandler().applyPageParameters(pageParameters, sqlQuery); // We'll always use an iterator, even if it is for later adding it to a list Iterator<PaymentAwaitingFeedbackDTO> iterator = new ScrollableResultsIterator<PaymentAwaitingFeedbackDTO>( sqlQuery, new Transformer<Object[], PaymentAwaitingFeedbackDTO>() { public PaymentAwaitingFeedbackDTO transform(final Object[] input) { PaymentAwaitingFeedbackDTO dto = new PaymentAwaitingFeedbackDTO(); dto.setId((Long) input[0]); dto.setTransferTypeId((Long) input[1]); dto.setScheduled(Boolean.TRUE.equals(input[2])); dto.setDate((Calendar) input[3]); dto.setAmount((BigDecimal) input[4]); dto.setMemberId((Long) input[5]); dto.setMemberName((String) input[6]); dto.setMemberUsername((String) input[7]); TransferType transferType = (TransferType) getSession().load(TransferType.class, dto.getTransferTypeId()); dto.setCurrency(getFetchDao().fetch(transferType.getCurrency())); return dto; } }); if (resultType == ResultType.ITERATOR) { return new IteratorListImpl<PaymentAwaitingFeedbackDTO>(iterator); } else { List<PaymentAwaitingFeedbackDTO> list = new ArrayList<PaymentAwaitingFeedbackDTO>(); CollectionUtils.addAll(list, iterator); DataIteratorHelper.close(iterator); if (resultType == ResultType.PAGE) { // For page, we need another search for the total count query.setPageForCount(); int totalCount = PageHelper.getTotalCount(searchPaymentsAwaitingFeedback(query)); return new PageImpl<PaymentAwaitingFeedbackDTO>(pageParameters, totalCount, list); } else { return list; } } } }
From source file:org.ednovo.gooru.infrastructure.persistence.hibernate.FeedbackRepositoryHibernate.java
License:Open Source License
@Override public Map<String, Object> getContentFlags(Integer limit, Integer offset, String feedbackCategory, String type, String status, String reportedFlagType, String startDate, String endDate, String searchQuery, String description, String reportQuery) { String sql = ""; String statusType = ""; String flagType = ""; if (status != null) { if (status.contains(",")) { status = status.replace(",", "','"); }/*from w ww. ja v a2 s . c o m*/ statusType = " and cs.value in ('" + status + "') "; } if (reportedFlagType != null) { if (reportedFlagType.contains(",")) { reportedFlagType = reportedFlagType.replace(",", "','"); } flagType = " and ft.value in ('" + reportedFlagType + "') "; } if (type.equalsIgnoreCase("collection")) { sql = "select title,concat(r.folder,r.thumbnail) as thumbnail,r.has_frame_breaker as hasFrameBreaker, r.media_type as mediaType, cl.goals as description, gooru_oid as gooruOid, cl.collection_type as category , CONVERT_TZ(c.created_on,@@session.time_zone,'US/Pacific') as createdOn, cs.value as value, group_concat(ft.value) as reportedFlag, c.user_uid as userUid, fp.value as product,group_concat(f.feedback_uid) as reportId, f.creator_uid as reportCreator,CONVERT_TZ(f.created_date,@@session.time_zone,'US/Pacific') as reportCreatedOn, f.feedback_text as reportDescription, f.notes as notes,url as url, f.context_path as browserUrl, 'temp' as scount,c.sharing as sharing,group_concat(u.username) as reporterName, ru.username as resourceCreatorName, f.last_modified_on as lastModifiedOn from content c inner join feedback f inner join custom_table_value cs on f.assoc_gooru_oid = c.gooru_oid and cs.custom_table_value_id = c.status_type inner join custom_table_value fp on f.product_id = fp.custom_table_value_id inner join custom_table_value ft on ft.custom_table_value_id = f.feedback_type_id inner join collection cl on cl.content_id = c.content_id inner join resource r on c.content_id = r.content_id inner join custom_table_value ss on f.feedback_category_id = ss.custom_table_value_id inner join custom_table ctab on ctab.custom_table_id = ft.custom_table_id inner join user u on u.gooru_uid = f.creator_uid inner join user ru on ru.gooru_uid = c.user_uid where ctab.name = '" + feedbackCategory + "' and cs.value is not null and cl.collection_type in ('collection', 'quiz')" + flagType + statusType + ""; } else { sql = "select title ,concat(r.folder,r.thumbnail) as thumbnail,r.has_frame_breaker as hasFrameBreaker , r.media_type as mediaType, r.description, gooru_oid as gooruOid, r.category as category , CONVERT_TZ(c.created_on,@@session.time_zone,'US/Pacific') as createdOn, cs.value as value, group_concat(ft.value) as reportedFlag, c.user_uid as userUid, fp.value as product, group_concat(f.feedback_uid) as reportId, f.creator_uid as reportCreator,CONVERT_TZ(f.created_date,@@session.time_zone,'US/Pacific') as reportCreatedOn, f.feedback_text as reportDescription,f.notes as notes, url as url, f.context_path as browserUrl,(select concat(count(distinct(ct.gooru_oid)) , '!#' , group_concat(distinct(ct.gooru_oid)), '~' ,group_concat(rc.title)) from collection_item ci inner join resource ri on ci.resource_content_id = ri.content_id inner join resource as rc on (rc.content_id = ci.collection_content_id) inner join content as ct on (ci.collection_content_id = ct.content_id) where ri.content_id = r.content_id) as scount, c.sharing as sharing,group_concat(u.username) as reporterName, ru.username as resourceCreatorName, f.last_modified_on as lastModifiedOn from content c inner join feedback f inner join custom_table_value cs on f.assoc_gooru_oid = c.gooru_oid and cs.custom_table_value_id = c.status_type inner join custom_table_value fp on f.product_id = fp.custom_table_value_id inner join custom_table_value ft on ft.custom_table_value_id = f.feedback_type_id inner join resource r on r.content_id = c.content_id inner join custom_table_value ss on f.feedback_category_id = ss.custom_table_value_id inner join custom_table ctab on ctab.custom_table_id = ft.custom_table_id inner join user u on u.gooru_uid = f.creator_uid inner join user ru on ru.gooru_uid = c.user_uid where ctab.name = '" + feedbackCategory + "' and cs.value is not null and r.type_name in ('resource/url','ppt/pptx', 'video/youtube', 'animation/swf', 'animation/kmz','textbook/scribd', 'assessment-question') " + statusType + "" + flagType + " "; } if (startDate != null && endDate != null) { sql += "and DATE(f.created_date) BETWEEN '" + startDate + "' and '" + endDate + "'"; } else if (startDate != null) { sql += " and DATE(f.created_date) = '" + startDate + "'"; } else if (endDate != null) { sql += " and DATE(f.created_date) = '" + endDate + "'"; } if (searchQuery != null) { sql += " and gooru_oid = '" + searchQuery + "' or title = '" + searchQuery + "' or f.feedback_text = '" + searchQuery + "' or f.notes = '" + searchQuery + "'"; } if (description != null && type.equalsIgnoreCase("collection")) { sql += " and cl.goals = '" + description + "'"; } else if (description != null && type.equalsIgnoreCase("resource")) { sql += " and r.description = '" + description + "'"; } if (reportQuery != null) { sql += " and f.creator_uid = '" + reportQuery + "' or u.username = '" + reportQuery + "'"; } sql += " group by f.creator_uid, f.assoc_gooru_oid order by f.created_date desc"; Query query = getSession().createSQLQuery(sql).addScalar("title", StandardBasicTypes.STRING) .addScalar("description", StandardBasicTypes.STRING) .addScalar("gooruOid", StandardBasicTypes.STRING).addScalar("category", StandardBasicTypes.STRING) .addScalar("createdOn", StandardBasicTypes.STRING).addScalar("value", StandardBasicTypes.STRING) .addScalar("reportedFlag", StandardBasicTypes.STRING) .addScalar("userUid", StandardBasicTypes.STRING).addScalar("product", StandardBasicTypes.STRING) .addScalar("reportId", StandardBasicTypes.STRING) .addScalar("reportCreator", StandardBasicTypes.STRING) .addScalar("reportCreatedOn", StandardBasicTypes.STRING) .addScalar("reportDescription", StandardBasicTypes.STRING) .addScalar("url", StandardBasicTypes.STRING).addScalar("browserUrl", StandardBasicTypes.STRING) .addScalar("scount", StandardBasicTypes.STRING).addScalar("sharing", StandardBasicTypes.STRING) .addScalar("notes", StandardBasicTypes.STRING).addScalar("reporterName", StandardBasicTypes.STRING) .addScalar("resourceCreatorName", StandardBasicTypes.STRING) .addScalar("thumbnail", StandardBasicTypes.STRING) .addScalar("hasFrameBreaker", StandardBasicTypes.BOOLEAN) .addScalar("mediaType", StandardBasicTypes.STRING) .addScalar("lastModifiedOn", StandardBasicTypes.STRING); query.setFirstResult(offset); query.setMaxResults(limit != null ? (limit > MAX_LIMIT ? MAX_LIMIT : limit) : LIMIT); return getFlags(query.list(), sql, type); }
From source file:org.ednovo.gooru.infrastructure.persistence.hibernate.user.UserRepositoryHibernate.java
License:Open Source License
@SuppressWarnings("unchecked") @Override// w w w . j av a 2 s .c o m public boolean checkUserAvailability(String keyword, CheckUser type, boolean isCollaboratorCheck) { List<Boolean> availability = null; if (type == CheckUser.BYUSERNAME) { String sql = GET_USER_NAME_AVAILABILITY; if (isCollaboratorCheck) { sql += " and user.primary_organization_uid IN (" + getUserOrganizationUidsAsString() + ") OR user.organization_uid ='" + getCurrentUserPrimaryOrganization().getPartyUid() + "'"; } availability = getSession().createSQLQuery(sql).addScalar(TOTAL_COUNT, StandardBasicTypes.BOOLEAN) .setParameter("userName", keyword).list(); } else if (type == CheckUser.BYEMAILID) { availability = getSession().createSQLQuery(GET_EMAILID_AVAILABILITY) .addScalar(TOTAL_COUNT, StandardBasicTypes.BOOLEAN).setParameter("emailId", keyword).list(); } return (availability != null && availability.size() > 0) ? availability.get(0) : false; }