Example usage for org.hibernate.type StandardBasicTypes BOOLEAN

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

Introduction

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

Prototype

BooleanType BOOLEAN

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

Click Source Link

Document

The standard Hibernate type for mapping Boolean to JDBC java.sql.Types#BIT BIT .

Usage

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;
}