Example usage for org.apache.commons.lang ObjectUtils toString

List of usage examples for org.apache.commons.lang ObjectUtils toString

Introduction

In this page you can find the example usage for org.apache.commons.lang ObjectUtils toString.

Prototype

public static String toString(Object obj) 

Source Link

Document

Gets the toString of an Object returning an empty string ("") if null input.

 ObjectUtils.toString(null)         = "" ObjectUtils.toString("")           = "" ObjectUtils.toString("bat")        = "bat" ObjectUtils.toString(Boolean.TRUE) = "true" 

Usage

From source file:org.marketcetera.jms.JMSSerMessageConverter.java

/**
 * Converts an object to a JMS Message by serializing it.
 *
 * @param inObject the object to be converted. The object should be
 * serializable./*from  w  w w .j av  a2 s.  co m*/
 * @param session the JMS Session instance.
 *
 * @return the JMS message.
 *
 * @throws JMSException if there were errors serializing the object.
 * @throws MessageConversionException if the supplied object was not
 * serializable or if there were errors serializing the object.
 */
@Override
public Message toMessage(Object inObject, Session session) throws JMSException, MessageConversionException {
    SLF4JLoggerProxy.debug(this, "Converting to JMS {}", inObject); //$NON-NLS-1$
    if (inObject instanceof Serializable) {
        try {
            return session.createObjectMessage((Serializable) inObject);
        } catch (RuntimeException e) {
            throw new MessageConversionException(
                    new I18NBoundMessage1P(Messages.UNEXPECTED_MESSAGE_TO_SEND, ObjectUtils.toString(inObject))
                            .getText(),
                    e);
        }
    } else {
        throw new MessageConversionException(
                new I18NBoundMessage1P(Messages.UNEXPECTED_MESSAGE_TO_SEND, ObjectUtils.toString(inObject))
                        .getText());
    }
}

From source file:org.marketcetera.ors.info.ReadInfoImpl.java

@SuppressWarnings("unchecked")
@Override/* w  w  w.  j  a va2  s  . c o m*/
public <T> T getValueIfInstanceOf(String key, Class<T> cls) throws InfoException {
    assertNonNullKey(key);
    Object result = getValueIfSet(key);
    if ((result != null) && (!cls.isInstance(result))) {
        throw new InfoException(
                new I18NBoundMessage3P(Messages.BAD_CLASS_VALUE, key, ObjectUtils.toString(result), cls));
    }
    return (T) result;
}

From source file:org.marketcetera.ors.info.ReadInfoImpl.java

@SuppressWarnings("unchecked")
@Override//  www.ja  va  2  s  . c om
public <T> T getValueIfNonNullInstanceOf(String key, Class<T> cls) throws InfoException {
    assertNonNullKey(key);
    Object result = getValueIfSet(key);
    if (result == null) {
        throw new InfoException(new I18NBoundMessage1P(Messages.NULL_VALUE, key));
    }
    if (!cls.isInstance(result)) {
        throw new InfoException(
                new I18NBoundMessage3P(Messages.BAD_CLASS_VALUE, key, ObjectUtils.toString(result), cls));
    }
    return (T) result;
}

From source file:org.marketcetera.ors.info.ReadWriteInfoImpl.java

@Override
public void setValueIfUnset(String key, Object value) throws InfoException {
    assertNonNullKey(key);/*from w  w  w . j  av a 2 s. c  o  m*/
    if (contains(key)) {
        throw new InfoException(new I18NBoundMessage3P(Messages.VALUE_EXISTS, key,
                ObjectUtils.toString(getValue(key)), ObjectUtils.toString(value)));
    }
    setValue(key, value);
}

From source file:org.marketcetera.photon.internal.strategy.ui.RemoteAgentPropertyPage.java

@Override
protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setFont(parent.getFont());

    mURI = createText(composite, Messages.REMOTE_AGENT_PROPERTY_PAGE_URL_LABEL,
            Messages.REMOTE_AGENT_PROPERTY_PAGE_URL_TOOLTIP, ObjectUtils.toString(mRemoteAgent.getURI()),
            false);//from w  ww  .j  ava  2 s .  c o m

    Group group = new Group(composite, SWT.NONE);
    group.setText(Messages.REMOTE_AGENT_PROPERTY_PAGE_CREDENTIALS_LABEL.getText());
    GridDataFactory.defaultsFor(group).span(2, 1).applyTo(group);

    mUsername = createText(group, Messages.REMOTE_AGENT_PROPERTY_PAGE_USERNAME_LABEL,
            Messages.REMOTE_AGENT_PROPERTY_PAGE_USERNAME_LABEL, mRemoteAgent.getUsername(), false);

    mPassword = createText(group, Messages.REMOTE_AGENT_PROPERTY_PAGE_PASSWORD_LABEL,
            Messages.REMOTE_AGENT_PROPERTY_PAGE_PASSWORD_LABEL, mRemoteAgent.getPassword(), true);

    GridLayoutFactory.swtDefaults().numColumns(2).generateLayout(group);

    Label description = new Label(composite, SWT.WRAP);
    description.setText(Messages.REMOTE_AGENT_PROPERTY_PAGE_CREDENTIALS_DESCRIPTION.getText());
    GridDataFactory.defaultsFor(description).span(2, 1).applyTo(description);

    GridLayoutFactory.swtDefaults().numColumns(2).generateLayout(composite);
    return composite;
}

From source file:org.marketcetera.util.ws.wrappers.MarshalledLocale.java

@Override
public String toString() {
    return ObjectUtils.toString(toLocale());
}

From source file:org.medici.bia.common.hibernate.search.bridge.MonthBridge.java

/**
 * /*from   w  w  w.ja v a 2 s .  co m*/
 */
public String objectToString(Object object) {
    if (object == null) {
        return null;
    }

    if (!object.getClass().equals(Month.class)) {
        return null;
    }

    Month month = (Month) object;

    if (ObjectUtils.toString(month.getMonthNum()).equals("")) {
        return "";
    }

    return month.getMonthNum().toString();
}

From source file:org.medici.bia.common.search.AdvancedSearchPeople.java

/**
 * This method return a JPA Query object. 
 *//*from w w w  .ja  va  2  s .co m*/
@Override
public String toJPAQuery() {
    // TODO Auto-generated method stub
    StringBuilder jpaQuery = new StringBuilder("FROM People WHERE ");

    //Names
    if (names.size() > 0) {
        StringBuilder namesQuery = new StringBuilder("(");
        for (int i = 0; i < names.size(); i++) {
            String[] wordsSingleNames = StringUtils.split(names.get(i), " ");
            if (namesQuery.length() > 1) {
                namesQuery.append(" AND ");
            }
            if (namesTypes.get(i).equals(NameType.AllNameTypes)) {
                for (int j = 0; j < wordsSingleNames.length; j++) {
                    namesQuery.append("(mapNameLf like '%");
                    namesQuery.append(wordsSingleNames[j].toLowerCase().replace("'", "''"));
                    namesQuery.append("%' OR ");
                    namesQuery
                            .append("(personId IN (SELECT person.personId FROM AltName WHERE altName like '%");
                    namesQuery.append(wordsSingleNames[j].toLowerCase().replace("'", "''"));
                    namesQuery.append("%')))");
                    if (j < (wordsSingleNames.length - 1)) {
                        namesQuery.append(" AND ");
                    }
                }
            } else {
                for (int j = 0; j < wordsSingleNames.length; j++) {
                    namesQuery
                            .append("(personId IN (SELECT person.personId FROM AltName WHERE altName like '%");
                    namesQuery.append(wordsSingleNames[j].toLowerCase().replace("'", "''"));
                    namesQuery.append("%' AND nameType like '");
                    namesQuery.append(namesTypes.get(i).toString().toLowerCase());
                    namesQuery.append("'))");
                    if (j < (wordsSingleNames.length - 1)) {
                        namesQuery.append(" AND ");
                    }
                }
            }
        }
        namesQuery.append(')');
        if (!namesQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(namesQuery);
        }

    }

    //Exact Name
    if (personId.size() > 0) {
        StringBuilder personIdQuery = new StringBuilder("(");
        for (int i = 0; i < personId.size(); i++) {
            if (personId.get(i) > 0) {
                if (personIdQuery.length() > 1) {
                    personIdQuery.append(" AND ");
                }

                personIdQuery.append("(personId=");
                personIdQuery.append(personId.get(i).toString());
                personIdQuery.append(")");

            }
        }
        personIdQuery.append(')');
        if (!personIdQuery.toString().equals("()")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(personIdQuery);
        }
    }

    //Words
    if (words.size() > 0) {
        StringBuilder wordsQuery = new StringBuilder("(");
        for (int i = 0; i < words.size(); i++) {
            if (wordsQuery.length() > 1) {
                wordsQuery.append(" AND ");
            }
            wordsQuery.append("((mapNameLf like '%");
            wordsQuery.append(words.get(i).toLowerCase().replace("'", "''"));
            wordsQuery.append("%') OR ");
            wordsQuery.append("((bioNotes like '%");
            wordsQuery.append(words.get(i).toLowerCase().replace("'", "''"));
            wordsQuery.append("%') OR ");
            wordsQuery.append("(staffNotes like '%");
            wordsQuery.append(words.get(i).toLowerCase().replace("'", "''"));
            wordsQuery.append("%') OR ");
            wordsQuery.append("((mapNameLf like '%");
            wordsQuery.append(words.get(i).toLowerCase().replace("'", "''"));
            wordsQuery.append("%') OR ");
            wordsQuery.append("(personId IN (SELECT person.personId FROM AltName WHERE altName like '%");
            wordsQuery.append(names.get(i).toLowerCase().replace("'", "''"));
            wordsQuery.append("%'))");
        }
        wordsQuery.append(')');
        if (!wordsQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(wordsQuery);
        }
    }

    //Dates
    if (datesTypes.size() > 0) {
        StringBuilder datesQuery = new StringBuilder("(");
        for (int i = 0; i < datesTypes.size(); i++) {
            if (datesTypes.get(i) == null) {
                continue;
            }
            if (datesQuery.length() > 1) {
                datesQuery.append(" AND ");
            }
            if (datesTypes.get(i).equals("Born after")) {
                //For years that have two numbers
                datesQuery.append(
                        "((bornYear < 100 AND STR_TO_DATE(CONCAT('00', bornYear, ',' , bornMonth, ',', bornDay),'%Y,%m,%d')>");
                datesQuery.append(
                        DateUtils.getDateForSQLQuery(datesYear.get(i), datesMonth.get(i), datesDay.get(i)));
                datesQuery.append(
                        ") OR (bornYear < 1000 AND bornYear >= 100 AND STR_TO_DATE(CONCAT('0', bornYear, ',' , bornMonth, ',', bornDay),'%Y,%m,%d')>");
                datesQuery.append(
                        DateUtils.getDateForSQLQuery(datesYear.get(i), datesMonth.get(i), datesDay.get(i)));
                datesQuery.append(
                        ") OR (bornYear >= 1000 AND STR_TO_DATE(CONCAT(bornYear, ',' , bornMonth, ',', bornDay),'%Y,%m,%d')>");
                datesQuery.append(
                        DateUtils.getDateForSQLQuery(datesYear.get(i), datesMonth.get(i), datesDay.get(i)));
                datesQuery.append(")) AND bornDateBc = false");
            } else if (datesTypes.get(i).equals("Dead by")) {
                datesQuery.append(
                        "((deathYear < 100 AND STR_TO_DATE(CONCAT('00', deathYear, ',' , deathMonth, ',', deathDay),'%Y, %m ,%d')<=");
                datesQuery.append(
                        DateUtils.getDateForSQLQuery(datesYear.get(i), datesMonth.get(i), datesDay.get(i)));
                datesQuery.append(
                        ") OR (deathYear < 1000 AND deathYear >= 100 AND STR_TO_DATE(CONCAT('0', deathYear, ',' , deathMonth, ',', deathDay),'%Y, %m ,%d')<=");
                datesQuery.append(
                        DateUtils.getDateForSQLQuery(datesYear.get(i), datesMonth.get(i), datesDay.get(i)));
                datesQuery.append(
                        ") OR (deathYear >= 1000 AND STR_TO_DATE(CONCAT(deathYear, ',' , deathMonth, ',', deathDay),'%Y, %m ,%d')<=");
                datesQuery.append(
                        DateUtils.getDateForSQLQuery(datesYear.get(i), datesMonth.get(i), datesDay.get(i)));
                datesQuery.append(")) AND deathDateBc = false");
            } else if (datesTypes.get(i).equals("Lived between")) {
                datesQuery.append(
                        "(((bornYear < 100 AND STR_TO_DATE(CONCAT('00', bornYear, ',' , bornMonth, ',', bornDay),'%Y, %m ,%d')<");
                datesQuery.append(DateUtils.getDateForSQLQuery(datesYearBetween.get(i),
                        datesMonthBetween.get(i), datesDayBetween.get(i)));
                datesQuery.append(
                        ") OR (bornYear < 1000 AND bornYear >= 100 AND STR_TO_DATE(CONCAT('0', bornYear, ',' , bornMonth, ',', bornDay),'%Y, %m ,%d')<");
                datesQuery.append(DateUtils.getDateForSQLQuery(datesYearBetween.get(i),
                        datesMonthBetween.get(i), datesDayBetween.get(i)));
                datesQuery.append(
                        ") OR (bornYear >= 1000 AND STR_TO_DATE(CONCAT(bornYear, ',' , bornMonth, ',', bornDay),'%Y, %m ,%d')<");
                datesQuery.append(DateUtils.getDateForSQLQuery(datesYearBetween.get(i),
                        datesMonthBetween.get(i), datesDayBetween.get(i)));
                datesQuery.append(
                        ")) AND ((deathYear < 100 AND STR_TO_DATE(CONCAT('00', deathYear, ',' , deathMonth, ',', deathDay),'%Y, %m ,%d')>");
                datesQuery.append(
                        DateUtils.getDateForSQLQuery(datesYear.get(i), datesMonth.get(i), datesDay.get(i)));
                datesQuery.append(
                        ") OR (deathYear < 1000 AND deathYear >=100 AND STR_TO_DATE(CONCAT('0', deathYear, ',' , deathMonth, ',', deathDay),'%Y, %m ,%d')>");
                datesQuery.append(
                        DateUtils.getDateForSQLQuery(datesYear.get(i), datesMonth.get(i), datesDay.get(i)));
                datesQuery.append(
                        ") OR (deathYear >= 1000 AND STR_TO_DATE(CONCAT(deathYear, ',' , deathMonth, ',', deathDay),'%Y, %m ,%d')>");
                datesQuery.append(
                        DateUtils.getDateForSQLQuery(datesYear.get(i), datesMonth.get(i), datesDay.get(i)));
                datesQuery.append(
                        ")) AND ((deathYear < 100 AND STR_TO_DATE(CONCAT('00', deathYear, ',' , deathMonth, ',', deathDay),'%Y, %m ,%d')<");
                datesQuery.append(DateUtils.getDateForSQLQuery(datesYearBetween.get(i),
                        datesMonthBetween.get(i), datesDayBetween.get(i)));
                datesQuery.append(
                        ") OR (deathYear < 1000 AND deathYear >= 100 AND STR_TO_DATE(CONCAT('0', deathYear, ',' , deathMonth, ',', deathDay),'%Y, %m ,%d')<");
                datesQuery.append(DateUtils.getDateForSQLQuery(datesYearBetween.get(i),
                        datesMonthBetween.get(i), datesDayBetween.get(i)));
                datesQuery.append(
                        ") OR (deathYear >= 1000 AND STR_TO_DATE(CONCAT(deathYear, ',' , deathMonth, ',', deathDay),'%Y, %m ,%d')<");
                datesQuery.append(DateUtils.getDateForSQLQuery(datesYearBetween.get(i),
                        datesMonthBetween.get(i), datesDayBetween.get(i)));
                datesQuery.append("))) AND bornDateBc = false AND deathDateBc = false");
            } else if (datesTypes.get(i).equals("Born/Died on")) {
                StringBuilder bornQuery = new StringBuilder(0);
                StringBuilder deathQuery = new StringBuilder(0);
                if (datesYear.get(i) != null) {
                    bornQuery.append("(bornYear =");
                    bornQuery.append(datesYear.get(i) + ")");
                    deathQuery.append("(deathYear =");
                    deathQuery.append(datesYear.get(i) + ")");
                    if (datesMonth.get(i) != null || datesDay.get(i) != null) {
                        bornQuery.append(" AND ");
                        deathQuery.append(" AND ");
                    }
                }
                if (datesMonth.get(i) != null) {
                    bornQuery.append("(bornMonth =");
                    bornQuery.append(datesMonth.get(i) + ")");
                    deathQuery.append("(deathMonth =");
                    deathQuery.append(datesMonth.get(i) + ")");
                    if (datesDay.get(i) != null) {
                        bornQuery.append(" AND ");
                        deathQuery.append(" AND ");
                    }
                }
                if (datesDay.get(i) != null) {
                    bornQuery.append("(bornDay =");
                    bornQuery.append(datesDay.get(i) + ")");
                    deathQuery.append("(deathDay =");
                    deathQuery.append(datesDay.get(i) + ")");
                }
                datesQuery.append(
                        bornQuery + " OR " + deathQuery + "AND bornDateBc = false AND deathDateBc = false");
            }
        }
        datesQuery.append(')');
        if (!datesQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(datesQuery);
        }
    }

    // date created
    if (datesCreatedTypes.size() > 0) {
        StringBuilder datesCreatedQuery = new StringBuilder("(");
        for (int i = 0; i < datesCreatedTypes.size(); i++) {
            if (datesCreatedTypes.get(i) == null) {
                continue;
            }

            if (datesCreatedQuery.length() > 1) {
                datesCreatedQuery.append(" AND ");
            }

            if (datesCreatedTypes.get(i).equals(DateType.From)) {
                datesCreatedQuery.append("(dateCreated >= '");
                datesCreatedQuery.append(DateUtils.getMYSQLDate(datesCreated.get(i)));
                datesCreatedQuery.append(')');
            } else if (datesCreatedTypes.get(i).equals(DateType.Before)) {
                datesCreatedQuery.append("(dateCreated <= '");
                datesCreatedQuery.append(DateUtils.getMYSQLDate(datesCreated.get(i)));
                datesCreatedQuery.append(')');
            } else if (datesCreatedTypes.get(i).equals(DateType.Between)) {
                datesCreatedQuery.append("(dateCreated between '");
                datesCreatedQuery.append(DateUtils.getMYSQLDate(datesCreated.get(i)));
                datesCreatedQuery.append("' AND '");
                datesCreatedQuery.append(DateUtils.getMYSQLDate(datesCreatedBetween.get(i)));
                datesCreatedQuery.append("')");
            } else if (datesCreatedTypes.get(i).equals(DateType.InOn)) {

            }
        }
        datesCreatedQuery.append(')');
        if (!datesCreatedQuery.toString().equals("")) {
            if (jpaQuery.length() > 20) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(datesCreatedQuery);
        }
    }

    // Last update
    if (datesLastUpdateTypes.size() > 0) {
        StringBuilder datesLastUpdateQuery = new StringBuilder("(");
        for (int i = 0; i < datesLastUpdateTypes.size(); i++) {
            if (datesLastUpdateTypes.get(i) == null) {
                continue;
            }

            if (datesLastUpdateQuery.length() > 1) {
                datesLastUpdateQuery.append(" AND ");
            }

            if (datesLastUpdateTypes.get(i).equals(DateType.From)) {
                datesLastUpdateQuery.append("(DATE_FORMAT(lastUpdate, '%Y-%m-%d') >= '");
                datesLastUpdateQuery.append(DateUtils.getMYSQLDate(datesLastUpdate.get(i)));
                datesLastUpdateQuery.append(')');
            } else if (datesLastUpdateTypes.get(i).equals(DateType.Before)) {
                datesLastUpdateQuery.append("(DATE_FORMAT(lastUpdate, '%Y-%m-%d') <= '");
                datesLastUpdateQuery.append(DateUtils.getMYSQLDate(datesLastUpdate.get(i)));
                datesLastUpdateQuery.append(')');
            } else if (datesLastUpdateTypes.get(i).equals(DateType.Between)) {
                datesLastUpdateQuery.append("(DATE_FORMAT(lastUpdate, '%Y-%m-%d') between '");
                datesLastUpdateQuery.append(DateUtils.getMYSQLDate(datesLastUpdate.get(i)));
                datesLastUpdateQuery.append("' AND '");
                datesLastUpdateQuery.append(DateUtils.getMYSQLDate(datesLastUpdateBetween.get(i)));
                datesLastUpdateQuery.append("')");
            } else if (datesLastUpdateTypes.get(i).equals(DateType.InOn)) {

            }
        }
        datesLastUpdateQuery.append(')');
        if (!datesLastUpdateQuery.toString().equals("")) {
            if (jpaQuery.length() > 20) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(datesLastUpdateQuery);
        }
    }

    //Role Categories
    if (roleCategories.size() > 0) {
        StringBuilder roleCatQuery = new StringBuilder("(");
        for (int i = 0; i < roleCategories.size(); i++) {
            if (roleCatQuery.length() > 1) {
                roleCatQuery.append(" AND ");
            }
            if (roleCategories.get(i).equals("ARTISTS and ARTISANS")
                    || roleCategories.get(i).equals("CORPORATE BODIES")
                    || roleCategories.get(i).equals("ECCLESIASTICS")
                    || roleCategories.get(i).equals("HEADS of STATE")
                    || roleCategories.get(i).equals("MILITARY and NAVAL PERSONNEL")
                    || roleCategories.get(i).equals("NOBLES") || roleCategories.get(i).equals("PROFESSIONS")
                    || roleCategories.get(i).equals("SCHOLARLY and LITERARY")
                    || roleCategories.get(i).equals("STATE and COURT PERSONNEL")
                    || roleCategories.get(i).equals("UNASSIGNED")) {
                roleCatQuery.append(
                        "(personId IN (SELECT person.personId FROM org.medici.bia.domain.PoLink WHERE titleOccList.roleCat.roleCatMajor like '%");
                roleCatQuery.append(roleCategories.get(i));
                roleCatQuery.append("%'))");
            } else {
                roleCatQuery.append(
                        "(personId IN (SELECT person.personId FROM org.medici.bia.domain.PoLink WHERE titleOccList.roleCat.roleCatMinor like '%");
                roleCatQuery.append(roleCategories.get(i));
                roleCatQuery.append("%'))");
            }
        }
        roleCatQuery.append(')');
        if (!roleCatQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(roleCatQuery);
        }
    }

    //OccupationsWord
    if (titleOccWord.size() > 0) {
        StringBuilder titleOccWordQuery = new StringBuilder("(");
        for (int i = 0; i < titleOccWord.size(); i++) {
            String[] wordsOccupation = StringUtils.split(titleOccWord.get(i), " ");
            if (titleOccWordQuery.length() > 1) {
                titleOccWordQuery.append(" AND ");
            }
            for (int j = 0; j < wordsOccupation.length; j++) {
                titleOccWordQuery.append(
                        "(personId IN (SELECT person.personId FROM org.medici.bia.domain.PoLink WHERE titleOccList.titleOcc like '%");
                titleOccWordQuery.append(wordsOccupation[j].replace("'", "''"));
                titleOccWordQuery.append("%'))");
                if (j < (wordsOccupation.length - 1)) {
                    titleOccWordQuery.append(" AND ");
                }
            }
        }
        titleOccWordQuery.append(')');
        if (!titleOccWordQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(titleOccWordQuery);
        }
    }

    //Occupations
    if (titlesOccId.size() > 0) {
        StringBuilder titleOccIdQuery = new StringBuilder("(");
        for (int i = 0; i < titlesOccId.size(); i++) {
            if (titleOccIdQuery.length() > 1) {
                titleOccIdQuery.append(" AND ");
            }
            if (titlesOccId.get(i) > 0) {
                titleOccIdQuery.append(
                        "(personId IN (SELECT person.personId FROM org.medici.bia.domain.PoLink WHERE titleOccList.titleOccId=");
                titleOccIdQuery.append(titlesOccId.get(i));
                titleOccIdQuery.append("))");
            } else {
                titleOccIdQuery.append(
                        "(personId IN (SELECT person.personId FROM org.medici.bia.domain.PoLink WHERE titleOccList.titleOcc like '%");
                titleOccIdQuery.append(titlesOcc.get(i).replace("'", "''"));
                titleOccIdQuery.append("%'))");
            }
        }
        titleOccIdQuery.append(')');
        if (!titleOccIdQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(titleOccIdQuery);
        }
    }

    //Gender
    if (gender.size() > 0) {
        StringBuilder genderQuery = new StringBuilder("(");
        for (int i = 0; i < gender.size(); i++) {
            if (genderQuery.length() > 1) {
                genderQuery.append(" AND ");
            }
            genderQuery.append("(gender like '");
            genderQuery.append(gender.get(i));
            genderQuery.append("' )");
        }
        genderQuery.append(')');
        if (!genderQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(genderQuery);
        }
    }

    //Places
    if (placeId.size() > 0) {
        StringBuilder placeIdQuery = new StringBuilder("(");
        for (int i = 0; i < placeId.size(); i++) {
            if (placeIdQuery.length() > 1) {
                placeIdQuery.append(" AND ");
            }
            if (placeType.get(i).equals("Birth/Death Place")) {
                if (placeId.get(i) > 0) {
                    placeIdQuery.append("(bornPlace.geogKey IN (SELECT geogKey FROM Place WHERE placeAllId=");
                    placeIdQuery.append(placeId.get(i));
                    placeIdQuery
                            .append(") OR deathPlace.geogKey IN (SELECT geogKey FROM Place WHERE placeAllId=");
                    placeIdQuery.append(placeId.get(i));
                    placeIdQuery.append("))");
                } else {
                    placeIdQuery.append("(bornPlace.placeName like '%");
                    placeIdQuery.append(place.get(i).replace("'", "''"));
                    placeIdQuery.append("%' OR deathPlace.placeName like '%");
                    placeIdQuery.append(place.get(i).replace("'", "''"));
                    placeIdQuery.append("%' )");
                }
            } else if (placeType.get(i).equals("Birth Place")) {
                if (placeId.get(i) > 0) {
                    placeIdQuery.append("(bornPlace.geogKey IN (SELECT geogKey FROM Place WHERE placeAllId=");
                    placeIdQuery.append(placeId.get(i));
                    placeIdQuery.append("))");
                } else {
                    placeIdQuery.append("(bornPlace.placeName like '%");
                    placeIdQuery.append(place.get(i).replace("'", "''"));
                    placeIdQuery.append("%' )");
                }
            } else if (placeType.get(i).equals("Death Place")) {
                if (placeId.get(i) > 0) {
                    placeIdQuery.append("(deathPlace.geogKey IN (SELECT geogKey FROM Place WHERE placeAllId=");
                    placeIdQuery.append(placeId.get(i));
                    placeIdQuery.append("))");
                } else {
                    placeIdQuery.append("(deathPlace.placeName like '%");
                    placeIdQuery.append(place.get(i).replace("'", "''"));
                    placeIdQuery.append("%' )");
                }
            }
        }
        placeIdQuery.append(')');
        if (!placeIdQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(placeIdQuery);
        }
    }

    //ResearchNotes
    if (researchNotes.size() > 0) {
        StringBuilder researchNotesQuery = new StringBuilder("(");

        for (int i = 0; i < researchNotes.size(); i++) {
            String[] wordsSingleResearchNotes = StringUtils.split(researchNotes.get(i), " ");
            if (researchNotesQuery.length() > 1) {
                researchNotesQuery.append(" AND ");
            }
            for (int j = 0; j < wordsSingleResearchNotes.length; j++) {
                researchNotesQuery.append("(bioNotes like '%");
                researchNotesQuery.append(wordsSingleResearchNotes[j].toLowerCase().replace("'", "''"));
                researchNotesQuery.append("%')");
                if (j < (wordsSingleResearchNotes.length - 1)) {
                    researchNotesQuery.append(" AND ");
                }
            }
        }
        researchNotesQuery.append(')');
        if (!researchNotesQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(researchNotesQuery);
        }
    }

    //PersonId
    if (peopleId.size() > 0) {
        StringBuilder peopleIdQuery = new StringBuilder("(");
        for (int i = 0; i < peopleId.size(); i++) {
            if (StringUtils.isNumeric(peopleId.get(i))) {
                if (peopleIdQuery.length() > 1) {
                    peopleIdQuery.append(" OR ");
                }
                peopleIdQuery.append("(personId=");
                peopleIdQuery.append(peopleId.get(i));
                peopleIdQuery.append(")");
            } else {
                continue;
            }
        }
        peopleIdQuery.append(")");
        if (!peopleIdQuery.toString().equals("")) {
            if (jpaQuery.length() > 18) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(peopleIdQuery);
        }
    }

    //LogicalDelete
    if (!ObjectUtils.toString(logicalDelete).equals("")) {
        StringBuilder logicalDeleteQuery = new StringBuilder("(");
        if (logicalDelete.equals(Boolean.TRUE)) {
            logicalDeleteQuery.append("(logicalDelete = true)");
        } else if (logicalDelete.equals(Boolean.FALSE)) {
            logicalDeleteQuery.append("(logicalDelete = false)");
        }
        logicalDeleteQuery.append(')');
        if (!logicalDeleteQuery.toString().equals("")) {
            if (jpaQuery.length() > 20) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(logicalDeleteQuery);
        }
    } else {
        if (jpaQuery.length() > 20) {
            jpaQuery.append(" AND ");
        }
        jpaQuery.append(" logicalDelete = false");
    }

    return jpaQuery.toString();
}

From source file:org.medici.bia.common.search.AdvancedSearchPlace.java

/**
 * {@inheritDoc}/*from ww  w  .  ja  v a  2  s  . co  m*/
 */
@Override
public String toJPAQuery() {
    StringBuilder jpaQuery = new StringBuilder("FROM Place WHERE ");

    //Place Name
    if (placesName.size() > 0) {
        StringBuilder placesNameQuery = new StringBuilder("(");
        for (int i = 0; i < placesName.size(); i++) {
            String currentWords = placesName.get(i);
            List<String> exactWords = new ArrayList<String>();

            if (placesNameQuery.length() > 1) {
                placesNameQuery.append(" AND ");
            }

            //MD: This code is to identify the words between double quotes
            while (currentWords.contains("\"")) {
                //First double quote
                int from = currentWords.indexOf("\"");
                //Second double quote
                int to = currentWords.indexOf("\"", from + 1);
                //If there is the second double quote or not
                if (to != -1) {
                    //Add the exact words to the list and remove them from the string
                    exactWords.add(currentWords.substring(from + 1, to));
                    currentWords = currentWords.substring(0, from)
                            + currentWords.substring(to + 1, currentWords.length());
                } else {
                    currentWords = currentWords.replace("\"", " ");
                }
            }

            String[] wordsSinglePlaceNames = StringUtils.split(currentWords, " ");

            for (int j = 0; j < exactWords.size(); j++) {
                placesNameQuery.append("((placeNameFull LIKE '%");
                placesNameQuery.append(exactWords.get(j).replace("'", "''"));
                placesNameQuery.append("%') OR (termAccent LIKE '%");
                placesNameQuery.append(exactWords.get(j).replace("'", "''"));
                placesNameQuery.append("%'))");
                if (j < (exactWords.size() - 1)) {
                    placesNameQuery.append(" AND ");
                }
            }

            if (exactWords.size() > 0 && wordsSinglePlaceNames.length > 0) {
                placesNameQuery.append(" AND ");
            }

            for (int j = 0; j < wordsSinglePlaceNames.length; j++) {
                placesNameQuery.append("((placeNameFull like '%");
                placesNameQuery.append(wordsSinglePlaceNames[j].toLowerCase().replace("'", "''"));
                placesNameQuery.append("%') or ");
                placesNameQuery.append("(termAccent like '%");
                placesNameQuery.append(wordsSinglePlaceNames[j].toLowerCase().replace("'", "''"));
                placesNameQuery.append("%'))");
                if (j < (wordsSinglePlaceNames.length - 1)) {
                    placesNameQuery.append(" AND ");
                }
            }
        }
        placesNameQuery.append(')');
        if (!placesNameQuery.toString().equals("")) {
            if (jpaQuery.length() > 17) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(placesNameQuery);
        }
    }

    //Exact Place Name
    if (placeId.size() > 0) {
        StringBuilder placeIdQuery = new StringBuilder("(");
        for (int i = 0; i < placeId.size(); i++) {
            if (placeId.get(i) > 0) {
                if (placeIdQuery.length() > 1) {
                    placeIdQuery.append(" OR ");
                }
                placeIdQuery.append("(placeAllId=");
                placeIdQuery.append(placeId.get(i));
                placeIdQuery.append(")");
            } else {
                continue;
            }
        }
        placeIdQuery.append(")");
        if (!placeIdQuery.toString().equals("")) {
            if (jpaQuery.length() > 17) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(placeIdQuery);
        }
    }

    //Place Type
    if (placeType.size() > 0) {
        StringBuilder placeTypeQuery = new StringBuilder("(");
        for (int i = 0; i < placeType.size(); i++) {
            if (placeTypeQuery.length() > 1) {
                placeTypeQuery.append(" AND ");
            }
            placeTypeQuery.append("(plType like '%");
            placeTypeQuery.append(placeType.get(i).toLowerCase());
            placeTypeQuery.append("%')");
        }
        placeTypeQuery.append(')');
        if (!placeTypeQuery.toString().equals("")) {
            if (jpaQuery.length() > 17) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(placeTypeQuery);
        }
    }

    //Linked to people
    if (linkedToPeople.size() > 0) {
        StringBuilder linkedToPeopleQuery = new StringBuilder("(");
        for (int i = 0; i < linkedToPeople.size(); i++) {
            if (linkedToPeopleQuery.length() > 1) {
                linkedToPeopleQuery.append(" AND ");
            }
            if (linkedToPeople.get(i).equals("Sender Location")) {
                linkedToPeopleQuery.append(
                        "(geogKey IN (SELECT senderPlace.geogKey FROM Document WHERE senderPlace is not null))");
            }
            if (linkedToPeople.get(i).equals("Recipient Location")) {
                linkedToPeopleQuery.append(
                        "(geogKey IN (SELECT recipientPlace.geogKey FROM Document WHERE recipientPlace is not null))");
            }
            if (linkedToPeople.get(i).equals("Birth Place")) {
                linkedToPeopleQuery.append(
                        "(geogKey IN (SELECT bornPlace.geogKey FROM People WHERE bornPlace is not null))");
            }
            if (linkedToPeople.get(i).equals("Death Place")) {
                linkedToPeopleQuery.append(
                        "(geogKey IN (SELECT deathPlace.geogKey FROM People WHERE deathPlace is not null))");
            }
        }
        linkedToPeopleQuery.append(')');
        if (!linkedToPeopleQuery.toString().equals("")) {
            if (jpaQuery.length() > 17) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(linkedToPeopleQuery);
        }
    }

    // date created
    if (datesCreatedTypes.size() > 0) {
        StringBuilder datesCreatedQuery = new StringBuilder("(");
        for (int i = 0; i < datesCreatedTypes.size(); i++) {
            if (datesCreatedTypes.get(i) == null) {
                continue;
            }

            if (datesCreatedQuery.length() > 1) {
                datesCreatedQuery.append(" AND ");
            }

            if (datesCreatedTypes.get(i).equals(DateType.From)) {
                datesCreatedQuery.append("(dateCreated >= '");
                datesCreatedQuery.append(DateUtils.getMYSQLDate(datesCreated.get(i)));
                datesCreatedQuery.append(')');
            } else if (datesCreatedTypes.get(i).equals(DateType.Before)) {
                datesCreatedQuery.append("(dateCreated <= '");
                datesCreatedQuery.append(DateUtils.getMYSQLDate(datesCreated.get(i)));
                datesCreatedQuery.append(')');
            } else if (datesCreatedTypes.get(i).equals(DateType.Between)) {
                datesCreatedQuery.append("(dateCreated between '");
                datesCreatedQuery.append(DateUtils.getMYSQLDate(datesCreated.get(i)));
                datesCreatedQuery.append("' AND '");
                datesCreatedQuery.append(DateUtils.getMYSQLDate(datesCreatedBetween.get(i)));
                datesCreatedQuery.append("')");
            } else if (datesCreatedTypes.get(i).equals(DateType.InOn)) {

            }
        }
        datesCreatedQuery.append(')');
        if (!datesCreatedQuery.toString().equals("")) {
            if (jpaQuery.length() > 20) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(datesCreatedQuery);
        }
    }

    // Last update
    if (datesLastUpdateTypes.size() > 0) {
        StringBuilder datesLastUpdateQuery = new StringBuilder("(");
        for (int i = 0; i < datesLastUpdateTypes.size(); i++) {
            if (datesLastUpdateTypes.get(i) == null) {
                continue;
            }

            if (datesLastUpdateQuery.length() > 1) {
                datesLastUpdateQuery.append(" AND ");
            }

            if (datesLastUpdateTypes.get(i).equals(DateType.From)) {
                datesLastUpdateQuery.append("(DATE_FORMAT(lastUpdate, '%Y-%m-%d') >= '");
                datesLastUpdateQuery.append(DateUtils.getMYSQLDate(datesLastUpdate.get(i)));
                datesLastUpdateQuery.append(')');
            } else if (datesLastUpdateTypes.get(i).equals(DateType.Before)) {
                datesLastUpdateQuery.append("(DATE_FORMAT(lastUpdate, '%Y-%m-%d') <= '");
                datesLastUpdateQuery.append(DateUtils.getMYSQLDate(datesLastUpdate.get(i)));
                datesLastUpdateQuery.append(')');
            } else if (datesLastUpdateTypes.get(i).equals(DateType.Between)) {
                datesLastUpdateQuery.append("(DATE_FORMAT(lastUpdate, '%Y-%m-%d') between '");
                datesLastUpdateQuery.append(DateUtils.getMYSQLDate(datesLastUpdate.get(i)));
                datesLastUpdateQuery.append("' AND '");
                datesLastUpdateQuery.append(DateUtils.getMYSQLDate(datesLastUpdateBetween.get(i)));
                datesLastUpdateQuery.append("')");
            } else if (datesLastUpdateTypes.get(i).equals(DateType.InOn)) {

            }
        }
        datesLastUpdateQuery.append(')');
        if (!datesLastUpdateQuery.toString().equals("")) {
            if (jpaQuery.length() > 20) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(datesLastUpdateQuery);
        }
    }

    //PlaceAllId
    if (placesId.size() > 0) {
        StringBuilder placesIdQuery = new StringBuilder("(");
        for (int i = 0; i < placesId.size(); i++) {
            if (StringUtils.isNumeric(placesId.get(i))) {
                if (placesIdQuery.length() > 1) {
                    placesIdQuery.append(" OR ");
                }
                placesIdQuery.append("(placeAllId=");
                placesIdQuery.append(placesId.get(i));
                placesIdQuery.append(")");
            } else {
                continue;
            }
        }
        placesIdQuery.append(")");
        if (!placesIdQuery.toString().equals("")) {
            if (jpaQuery.length() > 17) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(placesIdQuery);
        }
    }

    //LogicalDelete
    if (!ObjectUtils.toString(logicalDelete).equals("")) {
        StringBuilder logicalDeleteQuery = new StringBuilder("(");
        if (logicalDelete.equals(Boolean.TRUE)) {
            logicalDeleteQuery.append("(logicalDelete = true)");
        } else if (logicalDelete.equals(Boolean.FALSE)) {
            logicalDeleteQuery.append("(logicalDelete = false)");
        }
        logicalDeleteQuery.append(')');
        if (!logicalDeleteQuery.toString().equals("")) {
            if (jpaQuery.length() > 20) {
                jpaQuery.append(" AND ");
            }
            jpaQuery.append(logicalDeleteQuery);
        }
    } else {
        if (jpaQuery.length() > 20) {
            jpaQuery.append(" AND ");
        }
        jpaQuery.append(" logicalDelete = false");
    }

    return jpaQuery.toString();
}

From source file:org.medici.bia.common.search.AdvancedSearchVolume.java

/**
 * {@inheritDoc}//  w w  w.  jav a 2 s. c o  m
 */
@Override
/**
 * This method return a Lucene Query object. 
 */
public Query toLuceneQuery() {
    BooleanQuery luceneQuery = new BooleanQuery();

    if (words.size() > 0) {
        BooleanQuery wordsQuery = new BooleanQuery();
        for (int i = 0; i < words.size(); i++) {
            if (wordsTypes.get(i).equals(WordType.Titles)) {
                //
                BooleanQuery subQuery = new BooleanQuery();
                subQuery.add(new PrefixQuery(new Term("serieList.title", words.get(i).toLowerCase())),
                        Occur.SHOULD);
                subQuery.add(new PrefixQuery(new Term("serieList.subTitle1", words.get(i).toLowerCase())),
                        Occur.SHOULD);
                subQuery.add(new PrefixQuery(new Term("serieList.subTitle2", words.get(i).toLowerCase())),
                        Occur.SHOULD);
                wordsQuery.add(subQuery, Occur.MUST);
            } else if (wordsTypes.get(i).equals(WordType.Notes)) {
                // 
                BooleanQuery subQuery = new BooleanQuery();
                subQuery.add(new PrefixQuery(new Term("ccondition", words.get(i).toLowerCase())), Occur.SHOULD);
                subQuery.add(new PrefixQuery(new Term("ccontext", words.get(i).toLowerCase())), Occur.SHOULD);
                subQuery.add(new PrefixQuery(new Term("orgNotes", words.get(i).toLowerCase())), Occur.SHOULD);
                wordsQuery.add(subQuery, Occur.MUST);
            } else if (wordsTypes.get(i).equals(WordType.TitlesAndNotes)) {
                BooleanQuery subQuery = new BooleanQuery();
                subQuery.add(new PrefixQuery(new Term("serieList.title", words.get(i).toLowerCase())),
                        Occur.SHOULD);
                subQuery.add(new PrefixQuery(new Term("serieList.subTitle1", words.get(i).toLowerCase())),
                        Occur.SHOULD);
                subQuery.add(new PrefixQuery(new Term("serieList.subTitle2", words.get(i).toLowerCase())),
                        Occur.SHOULD);
                wordsQuery.add(subQuery, Occur.MUST);
                subQuery = new BooleanQuery();
                subQuery.add(new PrefixQuery(new Term("ccondition", words.get(i).toLowerCase())), Occur.SHOULD);
                subQuery.add(new PrefixQuery(new Term("ccontext", words.get(i).toLowerCase())), Occur.SHOULD);
                subQuery.add(new PrefixQuery(new Term("orgNotes", words.get(i).toLowerCase())), Occur.SHOULD);
                wordsQuery.add(subQuery, Occur.MUST);
            }
        }
        if (!wordsQuery.toString().equals("")) {
            luceneQuery.add(wordsQuery, Occur.MUST);
        }
    }

    // Date
    if (datesTypes.size() > 0) {
        BooleanQuery datesQuery = new BooleanQuery();
        for (int i = 0; i < datesTypes.size(); i++) {
            if (datesTypes.get(i) == null) {
                continue;
            } else if (datesTypes.get(i).equals(DateType.From)) {
                // Range query can be executed only on UN_TOKENIZED lucene field, so we use sort field.
                NumericRangeQuery<Integer> dateRangeQuery = NumericRangeQuery.newIntRange("startDate_Sort", 4,
                        DateUtils.getLuceneDate(datesYear.get(i), datesMonth.get(i), datesDay.get(i)),
                        DateUtils.MAX_DATE, true, true);
                datesQuery.add(dateRangeQuery, Occur.MUST);
            } else if (datesTypes.get(i).equals(DateType.Before)) {
                // Range query can be executed only on UN_TOKENIZED lucene field, so we use sort field.
                NumericRangeQuery<Integer> dateRangeQuery = NumericRangeQuery.newIntRange("endDate_Sort", 4,
                        DateUtils.MIN_DATE,
                        DateUtils.getLuceneDate(datesYear.get(i), datesMonth.get(i), datesDay.get(i)), true,
                        true);
                datesQuery.add(dateRangeQuery, Occur.MUST);
            } else if (datesTypes.get(i).equals(DateType.Between)) {
                // We add two condition because we work on two different fields.
                NumericRangeQuery<Integer> dateRangeQuery = NumericRangeQuery.newIntRange("startDate_Sort", 4,
                        DateUtils.getLuceneDate(datesYear.get(i), datesMonth.get(i), datesDay.get(i)),
                        DateUtils.MAX_DATE, true, true);
                datesQuery.add(dateRangeQuery, Occur.MUST);

                dateRangeQuery = NumericRangeQuery.newIntRange("endDate_Sort", 4, DateUtils.MIN_DATE,
                        DateUtils.getLuceneDate(datesYearBetween.get(i), datesMonthBetween.get(i),
                                datesDayBetween.get(i)),
                        true, true);
                datesQuery.add(dateRangeQuery, Occur.MUST);
            }
        }
        if (!datesQuery.toString().equals("")) {
            luceneQuery.add(datesQuery, Occur.MUST);
        }
    }

    // Volume
    if (volumes.size() > 0) {
        BooleanQuery volumesQuery = new BooleanQuery();
        for (int i = 0; i < volumes.size(); i++) {
            if (VolumeUtils.isVolumeFormat(volumes.get(i))) {
                if (volumesTypes.get(i).equals(VolumeType.Exactly)) {
                    if (StringUtils.isNumeric(volumes.get(i))) {
                        // (volNum:1)
                        BooleanClause booleanClause = new BooleanClause(
                                new TermQuery(new Term("volNum", volumes.get(i))), Occur.MUST);
                        volumesQuery.add(booleanClause);
                    } else {
                        BooleanQuery subQuery = new BooleanQuery();
                        // (volNum:1 AND volLetExt:a)
                        BooleanClause booleanClause = new BooleanClause(new TermQuery(
                                new Term("volNum", VolumeUtils.extractVolNum(volumes.get(i)).toString())),
                                Occur.MUST);
                        subQuery.add(booleanClause);

                        booleanClause.setQuery(new TermQuery(
                                new Term("volLetExt", VolumeUtils.extractVolNum(volumes.get(i)).toString())));
                        booleanClause.setOccur(Occur.MUST);
                        subQuery.add(booleanClause);

                        volumesQuery.add(subQuery, Occur.MUST);
                    }
                } else if (volumesTypes.get(i).equals(VolumeType.Between)) {
                    // Range query can be executed only on UN_TOKENIZED lucene field, so we use sort field.
                    NumericRangeQuery<Integer> volumeRangeQuery = NumericRangeQuery.newIntRange("volNum_Sort",
                            4, NumberUtils.toInt(volumes.get(i)), NumberUtils.toInt(volumesBetween.get(i)),
                            true, true);
                    volumesQuery.add(volumeRangeQuery, Occur.MUST);
                }
            } else {
                // if volume value is not in volume format we discard it!
                continue;
            }
        }
        if (!volumesQuery.toString().equals("")) {
            luceneQuery.add(volumesQuery, Occur.MUST);
        }
    }

    // Digitized is a new field on tblVolumes 
    if (!ObjectUtils.toString(digitized).equals("")) {
        BooleanQuery digitizedQuery = new BooleanQuery();
        TermQuery digitizedTermQuery;
        if (digitized.equals(Boolean.TRUE)) {
            digitizedTermQuery = new TermQuery(new Term("digitized", "true"));
            digitizedQuery.add(digitizedTermQuery, Occur.MUST);
        } else {
            digitizedTermQuery = new TermQuery(new Term("digitized", "false"));
            digitizedQuery.add(digitizedTermQuery, Occur.MUST);
        }
        luceneQuery.add(new BooleanClause(digitizedQuery, Occur.MUST));
    }

    //Languages
    if (languages.size() > 0) {
        BooleanQuery languagesQuery = new BooleanQuery();
        for (int i = 0; i < languages.size(); i++) {
            BooleanQuery singleLanguagesQuery = new BooleanQuery();
            String[] wordsSingleLanguages = StringUtils.split(languages.get(i), " ");
            for (int j = 0; j < wordsSingleLanguages.length; j++) {
                TermQuery termQuery;
                if (wordsSingleLanguages[j].equals("italian")) {
                    termQuery = new TermQuery(new Term("italian", "true"));
                    singleLanguagesQuery.add(termQuery, Occur.MUST);
                }
                if (wordsSingleLanguages[j].equals("french")) {
                    termQuery = new TermQuery(new Term("french", "true"));
                    singleLanguagesQuery.add(termQuery, Occur.MUST);
                }
                if (wordsSingleLanguages[j].equals("german")) {
                    termQuery = new TermQuery(new Term("german", "true"));
                    singleLanguagesQuery.add(termQuery, Occur.MUST);
                }
                if (wordsSingleLanguages[j].equals("spanish")) {
                    termQuery = new TermQuery(new Term("spanish", "true"));
                    singleLanguagesQuery.add(termQuery, Occur.MUST);
                }
                if (wordsSingleLanguages[j].equals("latin")) {
                    termQuery = new TermQuery(new Term("latin", "true"));
                    singleLanguagesQuery.add(termQuery, Occur.MUST);
                }
                if (wordsSingleLanguages[j].equals("english")) {
                    termQuery = new TermQuery(new Term("english", "true"));
                    singleLanguagesQuery.add(termQuery, Occur.MUST);
                }
            }
            languagesQuery.add(new BooleanClause(singleLanguagesQuery, Occur.MUST));
        }
        luceneQuery.add(new BooleanClause(languagesQuery, Occur.MUST));
    }

    //Cypher
    if (cipher.length() > 0) {
        BooleanQuery cipherQuery = new BooleanQuery();
        TermQuery cipherTermQuery;
        if (cipher.equals("Yes")) {
            cipherTermQuery = new TermQuery(new Term("cipher", "true"));
            cipherQuery.add(cipherTermQuery, Occur.MUST);
        } else if (cipher.equals("No")) {
            cipherTermQuery = new TermQuery(new Term("cipher", "false"));
            cipherQuery.add(cipherTermQuery, Occur.MUST);
        }
        luceneQuery.add(new BooleanClause(cipherQuery, Occur.MUST));
    }

    //Index Of Names
    if (index.length() > 0) {
        BooleanQuery indexQuery = new BooleanQuery();
        TermQuery indexTermQuery;
        if (index.equals("Yes")) {
            indexTermQuery = new TermQuery(new Term("oldAlphaIndex", "true"));
            indexQuery.add(indexTermQuery, Occur.MUST);
        } else if (index.equals("No")) {
            indexTermQuery = new TermQuery(new Term("oldAlphaIndex", "true"));
            indexQuery.add(indexTermQuery, Occur.MUST);
        }
        luceneQuery.add(new BooleanClause(indexQuery, Occur.MUST));
    }

    //From
    if (fromVolume.size() > 0) {
        BooleanQuery fromVolumeQuery = new BooleanQuery();
        for (int i = 0; i < fromVolume.size(); i++) {
            BooleanQuery singleFromVolumeQuery = new BooleanQuery();
            String[] wordsSingleFromVolume = StringUtils.split(fromVolume.get(i), " ");
            for (int j = 0; j < wordsSingleFromVolume.length; j++) {
                TermQuery termQuery = new TermQuery(new Term("senders", wordsSingleFromVolume[j]));
                singleFromVolumeQuery.add(termQuery, Occur.MUST);
            }
            fromVolumeQuery.add(new BooleanClause(singleFromVolumeQuery, Occur.MUST));
        }
        luceneQuery.add(new BooleanClause(fromVolumeQuery, Occur.MUST));
    }

    //To
    if (toVolume.size() > 0) {
        BooleanQuery toVolumeQuery = new BooleanQuery();
        for (int i = 0; i < toVolume.size(); i++) {
            BooleanQuery singleToVolumeQuery = new BooleanQuery();
            String[] wordsSingleToVolume = StringUtils.split(toVolume.get(i), " ");
            for (int j = 0; j < wordsSingleToVolume.length; j++) {
                TermQuery termQuery = new TermQuery(new Term("recips", wordsSingleToVolume[j]));
                singleToVolumeQuery.add(termQuery, Occur.MUST);
            }
            toVolumeQuery.add(new BooleanClause(singleToVolumeQuery, Occur.MUST));
        }
        luceneQuery.add(new BooleanClause(toVolumeQuery, Occur.MUST));
    }

    //Context
    if (context.size() > 0) {
        BooleanQuery contextQuery = new BooleanQuery();
        for (int i = 0; i < context.size(); i++) {
            BooleanQuery singleContextQuery = new BooleanQuery();
            String[] wordsSingleContext = StringUtils.split(context.get(i), " ");
            for (int j = 0; j < wordsSingleContext.length; j++) {
                TermQuery termQuery = new TermQuery(new Term("ccontext", wordsSingleContext[j]));
                singleContextQuery.add(termQuery, Occur.MUST);
            }
            contextQuery.add(new BooleanClause(singleContextQuery, Occur.MUST));
        }
        luceneQuery.add(new BooleanClause(contextQuery, Occur.MUST));
    }

    //Inventario
    if (inventario.size() > 0) {
        BooleanQuery inventarioQuery = new BooleanQuery();
        for (int i = 0; i < inventario.size(); i++) {
            BooleanQuery singleInventarioQuery = new BooleanQuery();
            String[] wordsSingleInventario = StringUtils.split(inventario.get(i), " ");
            for (int j = 0; j < wordsSingleInventario.length; j++) {
                TermQuery termQuery = new TermQuery(
                        new Term("inventarioSommarioDescription", wordsSingleInventario[j]));
                singleInventarioQuery.add(termQuery, Occur.MUST);
            }
            inventarioQuery.add(new BooleanClause(singleInventarioQuery, Occur.MUST));
        }
        luceneQuery.add(new BooleanClause(inventarioQuery, Occur.MUST));
    }

    //test
    //      TermQuery test = new TermQuery(new Term("italian", "true"));
    //      BooleanQuery test2 = new BooleanQuery();
    //      test2.add(test, Occur.MUST);
    //      luceneQuery.add(new BooleanClause(test2, Occur.MUST));

    return luceneQuery;
}