Ignore:
Timestamp:
12/19/13 14:36:04 (10 years ago)
Author:
olhsha
Message:

adding trasnactional, refactoring and fixing bugs in updated annotations, removing try-catch from resource methods (The Greek's advice)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDao.java

    r4183 r4207  
    2626import eu.dasish.annotation.schema.AnnotationInfo;
    2727import eu.dasish.annotation.schema.Permission;
     28import java.io.IOException;
    2829import java.lang.String;
    2930import java.sql.ResultSet;
     
    3738import javax.sql.DataSource;
    3839import javax.xml.datatype.DatatypeConfigurationException;
     40import javax.xml.parsers.ParserConfigurationException;
    3941import org.springframework.jdbc.core.RowMapper;
     42import org.xml.sax.SAXException;
    4043
    4144/**
     
    115118
    116119    @Override
    117     public List<Number> getAnnotationIDsForUserWithPermission(Number userID, String permissionString) {
    118         if (userID == null || permissionString == null) {
    119             return null;
    120         }
     120    public List<Number> getAnnotationIDsForUserWithPermission(Number userID, String[] permissionStrings) {
     121        if (userID == null || permissionStrings == null) {
     122            return null;
     123        }
     124
     125        String values = stringsToValuesString(permissionStrings);
     126
    121127        StringBuilder sql = new StringBuilder("SELECT ");
    122128        sql.append(annotation_id).append(" FROM ").append(permissionsTableName).append(" WHERE ").
    123129                append(principal_id).append("  = ").append(userID.toString()).append(" AND ").
    124                 append(permission).append("  = ?");;
    125         return getSimpleJdbcTemplate().query(sql.toString(), internalIDRowMapper, permissionString);
     130                append(permission).append("  IN ").append(values);
     131        return getSimpleJdbcTemplate().query(sql.toString(), internalIDRowMapper);
     132    }
     133
     134    private String stringsToValuesString(String[] strings) {
     135        if (strings == null) {
     136            return null;
     137        }
     138
     139        int length = strings.length;
     140        if (length == 0) {
     141            return null;
     142        }
     143        String result = "(";
     144        for (int i = 0; i < length - 1; i++) {
     145            result = result + "'"+strings[i] + "', ";
     146        }
     147        result = result + "'"+strings[length - 1] + "')";
     148        return result;
    126149    }
    127150
     
    312335
    313336    //////////// UPDATERS /////////////
    314     @Override
    315     public int updateAnnotationBodyText(Number annotationID, String text) {
    316         StringBuilder sql = new StringBuilder("UPDATE ");
    317         sql.append(annotationTableName).append(" SET ").
    318                 append(last_modified).append("=  default,").
    319                 append(body_text).append("= '").append(text).
    320                 append("' WHERE ").append(annotation_id).append("= ?");
    321         int affectedRows = getSimpleJdbcTemplate().update(sql.toString(), annotationID);
    322         return affectedRows;
    323     }
    324 
    325     @Override
    326     public int updateAnnotationBody(Number annotationID, AnnotationBody annotationBody) {
    327         String[] body = retrieveBodyComponents(annotationBody);
     337   
     338
     339    @Override
     340    public int updateAnnotationBody(Number annotationID, String text, String mimeType, Boolean isXml) {
    328341        Map<String, Object> params = new HashMap<String, Object>();
    329         params.put("annotationID", annotation_id);
    330         params.put("bodyText", body[0]);
    331         params.put("bodyMimeType", body[1]);
    332         params.put("isXml", annotationBody.getXmlBody() != null);
     342        params.put("annotationID", annotationID);
     343        params.put("bodyText", text);
     344        params.put("bodyMimeType", mimeType);
     345        params.put("isXml", isXml);
    333346
    334347        StringBuilder sql = new StringBuilder("UPDATE ");
     
    338351                append(body_mimetype).append("= :bodyMimeType, ").
    339352                append(is_xml).append("= :isXml").
    340                 append("' WHERE ").append(annotation_id).append("= :annotationID");
    341         int affectedRows = getSimpleJdbcTemplate().update(sql.toString(), annotationID);
     353                append(" WHERE ").append(annotation_id).append("= :annotationID");
     354        int affectedRows = getSimpleJdbcTemplate().update(sql.toString(), params);
    342355        return affectedRows;
    343356    }
     
    374387        Map<String, Object> params = new HashMap<String, Object>();
    375388        params.put("permission", permission.value());
    376         params.put("annotationID", annotation_id);
    377         params.put("principalID", principal_id);
     389        params.put("annotationID", annotationID);
     390        params.put("principalID", userID);
    378391
    379392        StringBuilder sql = new StringBuilder("UPDATE ");
    380393        sql.append(permissionsTableName).append(" SET ").
    381394                append(this.permission).append("= :permission").
    382                 append(" WHERE ").append(annotation_id).append("= : annotationID").
     395                append(" WHERE ").append(annotation_id).append("= :annotationID").
    383396                append(" AND ").append(principal_id).append("= :principalID");
    384397        return getSimpleJdbcTemplate().update(sql.toString(), params);
     
    474487
    475488    /////////////// helpers //////////////////
    476     private String[] retrieveBodyComponents(AnnotationBody annotationBody) {
     489    public String[] retrieveBodyComponents(AnnotationBody annotationBody) {
    477490        boolean body_is_xml = annotationBody.getXmlBody() != null;
    478491        String[] result = new String[2];
Note: See TracChangeset for help on using the changeset viewer.