Ignore:
Timestamp:
12/11/13 15:59:54 (10 years ago)
Author:
olhsha
Message:

a fragments (of a target) is now a part of the attribute link. The Dao's and unit tests are updated and work. Fixed corrupted pom (there was ill glass-fish dependency that spoiled authentication)

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/JdbcTargetDao.java

    r4173 r4181  
    5454    public Target getTarget(Number internalID) {
    5555        StringBuilder sql = new StringBuilder("SELECT ");
    56         sql.append(TargetStar).append(" FROM ").append(targetTableName).append(" WHERE ").append(target_id).append("= ? LIMIT 1");
    57         List<Target> result = getSimpleJdbcTemplate().query(sql.toString(), TargetRowMapper, internalID);
     56        sql.append(targetStar).append(" FROM ").append(targetTableName).append(" WHERE ").append(target_id).append("= ? LIMIT 1");
     57        List<Target> result = getSimpleJdbcTemplate().query(sql.toString(), targetRowMapper, internalID);
    5858        return (!result.isEmpty() ? result.get(0) : null);
    5959    }
    60     private final RowMapper<Target> TargetRowMapper = new RowMapper<Target>() {
     60    private final RowMapper<Target> targetRowMapper = new RowMapper<Target>() {
    6161        @Override
    6262        public Target mapRow(ResultSet rs, int rowNumber) throws SQLException {
     
    7171    public String getLink(Number internalID) {
    7272        StringBuilder sql = new StringBuilder("SELECT ");
    73         sql.append(TargetStar).append(" FROM ").append(targetTableName).append(" WHERE ").append(target_id).append("= ? LIMIT 1");
     73        sql.append(targetStar).append(" FROM ").append(targetTableName).append(" WHERE ").append(target_id).append("= ? LIMIT 1");
    7474        List<String> result = getSimpleJdbcTemplate().query(sql.toString(), linkRowMapper, internalID);
    7575        return (!result.isEmpty() ? result.get(0) : null);
     
    122122
    123123        StringBuilder sql = new StringBuilder("SELECT ");
    124         sql.append(external_id).append(",").append(link_uri).append(",").append(version).
     124        sql.append(external_id).append(",").append(link_uri).append(",").append(version).append(",").append(fragment_descriptor).
    125125                append(" FROM ").append(targetTableName).append(" WHERE ").append(target_id).append(" IN ").append(targetIDs);
    126126        return getSimpleJdbcTemplate().query(sql.toString(), targetInfoRowMapper);
     
    129129        @Override
    130130        public TargetInfo mapRow(ResultSet rs, int rowNumber) throws SQLException {
    131             return constructTargetInfo(rs.getString(external_id), rs.getString(link_uri), rs.getString(version));
     131            return constructTargetInfo(rs.getString(external_id), rs.getString(link_uri), rs.getString(version), rs.getString(fragment_descriptor));
    132132        }
    133133    };
     
    166166    public Number addTarget(Target target) {
    167167        UUID externalID = UUID.randomUUID();
     168        String[] linkParts = splitLink(target.getLink());
    168169        Map<String, Object> params = new HashMap<String, Object>();
    169170        params.put("externalId", externalID.toString());
    170         params.put("linkUri", target.getLink());
     171        params.put("linkUri", linkParts[0]);
    171172        params.put("version", target.getVersion());
     173        params.put("fragmentDescriptor", linkParts[1]);
    172174        StringBuilder sql = new StringBuilder("INSERT INTO ");
    173         sql.append(targetTableName).append("(").append(external_id).append(",").append(link_uri).append(",").append(version).append(",").append(last_modified).append(" ) VALUES (:externalId, :linkUri,  :version, current_timestamp AT TIME ZONE INTERVAL '00:00' HOUR TO MINUTE)");
     175        sql.append(targetTableName).append("(").append(external_id).append(",").append(link_uri).append(",").append(version).append(",").append(last_modified).append(",").append(fragment_descriptor).append(" ) VALUES (:externalId, :linkUri,  :version, current_timestamp AT TIME ZONE INTERVAL '00:00' HOUR TO MINUTE, :fragmentDescriptor)");
    174176        final int affectedRows = getSimpleJdbcTemplate().update(sql.toString(), params);
    175177        return (affectedRows > 0 ? getInternalID(UUID.fromString(externalID.toString())) : null);
     
    227229
    228230    /////////// HELPERS  ////////////////
    229     private TargetInfo constructTargetInfo(String externalID, String link, String version) {
     231    private TargetInfo constructTargetInfo(String externalID, String link, String version, String fragment) {
    230232        TargetInfo targetInfo = new TargetInfo();
    231233        targetInfo.setRef(externalIDtoURI(externalID));
    232         targetInfo.setLink(link);
     234        targetInfo.setLink(((new StringBuilder(link)).append("#").append(fragment)).toString());
    233235        targetInfo.setVersion(version);
    234236        return targetInfo;
     
    239241        target.setURI(externalIDtoURI(externalID));
    240242        target.setLastModified(xmlTimeStamp);
    241         target.setLink(link);
     243        target.setLink(((new StringBuilder(link)).append("#").append(fragment)).toString());
    242244        target.setVersion(version);
    243         target.setFragmentDescriptor(fragment);
    244245        return target;
    245246    }
     247   
     248    private String[] splitLink(String link){
     249      if (link!=null) {
     250         String[] result = new String[2];
     251         String[] parts = link.split("#");
     252         if (parts.length > 1) {
     253             result[0] = parts[0];             
     254             StringBuilder buffer = new StringBuilder();
     255             for (int i=1; i<parts.length ; i++){
     256                 if (parts[i]!=null){
     257                     buffer.append(parts[i]);
     258                 }
     259             }
     260             result[1] = buffer.toString();
     261         }
     262         return result;
     263      }
     264      else return null;
     265    }
    246266}
Note: See TracChangeset for help on using the changeset viewer.