import fr.gouv.finances.dgfip.xemelios.common.config.EtatModel;
import fr.gouv.finances.dgfip.xemelios.common.config.ListeResultatModel;
import fr.gouv.finances.dgfip.xemelios.common.config.Loader;
+import fr.gouv.finances.dgfip.xemelios.common.config.PJRefInfo;
import fr.gouv.finances.dgfip.xemelios.common.config.PersonnalConfigParser;
import fr.gouv.finances.dgfip.xemelios.common.config.RechercheModel;
import fr.gouv.finances.dgfip.xemelios.common.config.RecherchePaireModel;
}
@Override
- public PJRef getPj(final Pair collectivite, final String pjName, final XemeliosUser user) throws DataConfigurationException, DataAccessException, UnauthorizedException {
+ public PJRef getPj(final Pair collectivite, final PJRefInfo pjRefInfo, final XemeliosUser user) throws DataConfigurationException, DataAccessException, UnauthorizedException {
PJRef result = null;
+ final String pjId = pjRefInfo.getId();
final Connection con = PoolManager.getInstance().getConnection();
try {
final PreparedStatement ps = con.prepareStatement("SELECT IN_ARCHIVE, ARCHIVE_NAME, PATH FROM ATTACHMENTS WHERE COLLECTIVITE=? AND ID_UNIQUE=?");
ps.setString(1, collectivite.key);
- ps.setString(2, pjName);
+ ps.setString(2, pjId);
final ResultSet rs = ps.executeQuery();
if (rs.next()) {
final File baseDir = new File(basePath);
final File collectiviteDir = new File(baseDir, collectivite.key);
- final String hash = Integer.toHexString(this.archiveLocator.getCollectiviteHash(pjName)).toUpperCase();
+ final String hash = Integer.toHexString(this.archiveLocator.getCollectiviteHash(pjId)).toUpperCase();
final File pjDir = new File(collectiviteDir, hash);
- final File pjFile = new File(pjDir, pjName);
+ final File pjFile = new File(pjDir, pjId);
if (pjFile.exists()) {
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
}
@Override
- public PJRef getPjByUniqueId(final Pair collectivite, final String id, final XemeliosUser user) throws DataConfigurationException, DataAccessException, UnauthorizedException {
- return this.getPj(collectivite, id, user);
- }
-
- @Override
- public boolean isPjAvailable(final Pair collectivite, final String id, final XemeliosUser user) throws DataConfigurationException, DataAccessException, UnauthorizedException {
+ public boolean isPjAvailable(final Pair collectivite, final PJRefInfo pjRefInfo, final XemeliosUser user) throws DataConfigurationException, DataAccessException, UnauthorizedException {
if (!user.hasRole(XemeliosUser.ROLE_SEARCH)) {
throw new UnauthorizedException("Vous n'êtes pas autorisé à faire des recherches");
}
sb.append("SELECT 1 FROM ATTACHMENTS WHERE COLLECTIVITE=? AND ID_UNIQUE=?");
ps = con.prepareStatement(sb.toString());
ps.setString(1, collectivite.key);
- ps.setString(2, id);
+ ps.setString(2, pjRefInfo.getId());
final ResultSet rs = ps.executeQuery();
if (rs.next()) {
ret = true;
// filtre collectivite/budget
whereClause.append(" WHERE (").append(mainTableColCol).append(" = '").append(StringEscapeUtils.escapeSql(collectivite.key)).append("'");
- whereClause.append(" AND ").append(mainTableBudCol).append(" = '").append(StringEscapeUtils.escapeSql(budget.key)).append("'");
+ whereClause.append(" AND ").append(mainTableBudCol).append(" = '").append(StringEscapeUtils.escapeSql(budget.key)).append("')");
usedTable.add(mainTableName);
- final String lastConnector = "&&";
+ boolean inOrClause = false;
+ boolean isFirstCriteria = true;
for (final CritereModel cm : criterias) {
final TCriteria criteria = (TCriteria) cm.getAdditionnalData();
// on ajoute la condition
if (!StringUtils.isEmpty(whereCond)) {
- if (!connector.equals(lastConnector)) {
- whereClause.append(")");
- }
-
- whereClause.append("||".equals(connector) ? " OR " : " AND ");
-
- if (!connector.equals(lastConnector)) {
- whereClause.append("(");
+ if (isFirstCriteria) {
+ whereClause.append(" AND ((");
+ isFirstCriteria = false;
+ } else if ("||".equals(connector)) {// quand on a un OU, on ouvre un nouveau filtre
+ // on ferme le filtre précédent et on ouvre le nouveau
+ whereClause.append(") OR (");
+ inOrClause = true;
+ } else {
+ whereClause.append(" AND ");
}
whereClause.append(whereCond);
}
}
- if (lastConnector != null) {
- whereClause.append(")");
+ // on a rajouté des critère ?
+ if (!isFirstCriteria) {
+ whereClause.append("))");
}
whereClause.append(" ").append(OracleDataLayer.WHERE_REPLACEMENT);