Changeset 3463 for DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDao.java
- Timestamp:
- 08/23/13 15:20:13 (11 years ago)
- 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
r3461 r3463 57 57 @Override 58 58 public List<Number> retrieveSourceIDs(Number annotationID) { 59 String sql = "SELECT " + source_id + " FROM " + annotationsSourcesTableName + " WHERE " + annotation_id + "= ?";60 List<Number> result = getSimpleJdbcTemplate().query(sql, sourceIDRowMapper, annotationID);61 return result;59 StringBuilder sql = new StringBuilder("SELECT DISTINCT "); 60 sql.append(source_id).append(" FROM ").append(annotationsSourcesTableName).append(" WHERE ").append(annotation_id).append("= ?"); 61 return getSimpleJdbcTemplate().query(sql.toString(), sourceIDRowMapper, annotationID); 62 62 } 63 63 … … 102 102 } 103 103 104 List<Number> result = getSimpleJdbcTemplate().query(sql.toString(), internalIDRowMapper, params); 105 return result; 104 return getSimpleJdbcTemplate().query(sql.toString(), internalIDRowMapper, params); 106 105 } 107 106 … … 119 118 query.append(annotation_id).append(" FROM ").append(annotationsSourcesTableName).append(" WHERE ").append(source_id).append(" IN "); 120 119 query.append(values); 121 List<Number> result = getSimpleJdbcTemplate().query(query.toString(), internalIDRowMapper); 122 return result; 120 return getSimpleJdbcTemplate().query(query.toString(), internalIDRowMapper); 123 121 } 124 122 … … 137 135 138 136 String values = makeListOfValues(annotationIDs); 139 String sql = "SELECT DISTINCT " + annotationStar + " FROM " + annotationTableName + " WHERE " + annotationAnnotation_id + " IN " + values; 140 return getSimpleJdbcTemplate().query(sql, annotationInfoRowMapper); 137 StringBuilder sql = new StringBuilder("SELECT DISTINCT "); 138 sql.append(annotationStar).append(" FROM ").append(annotationTableName ).append(" WHERE ").append(annotationAnnotation_id).append(" IN ").append(values); 139 return getSimpleJdbcTemplate().query(sql.toString(), annotationInfoRowMapper); 141 140 } 142 141 private final RowMapper<AnnotationInfo> annotationInfoRowMapper = new RowMapper<AnnotationInfo>() { … … 144 143 public AnnotationInfo mapRow(ResultSet rs, int rowNumber) throws SQLException { 145 144 AnnotationInfo annotationInfo = new AnnotationInfo(); 145 annotationInfo.setRef(externalIDtoURI(_serviceURI, rs.getString(external_id))); 146 146 annotationInfo.setOwner(getResourceREF(Integer.toString(rs.getInt(owner_id)))); 147 147 annotationInfo.setHeadline(rs.getString(headline)); … … 161 161 @Override 162 162 public List<ResourceREF> getAnnotationREFs(List<Number> annotationIDs) { 163 164 163 if (annotationIDs == null) { 165 164 return null; 166 165 } 167 168 166 if (annotationIDs.isEmpty()) { 169 167 return (new ArrayList<ResourceREF>()); … … 171 169 172 170 String values = makeListOfValues(annotationIDs); 173 String sql = "SELECT DISTINCT " + annotationAnnotation_id + " FROM " + annotationTableName + " WHERE " + annotationAnnotation_id + " IN " + values; 174 return getSimpleJdbcTemplate().query(sql, annotationREFRowMapper); 171 StringBuilder sql = new StringBuilder("SELECT DISTINCT "); 172 sql.append(external_id).append(" FROM ").append(annotationTableName).append(" WHERE ").append(annotationAnnotation_id).append(" IN ").append(values); 173 return getSimpleJdbcTemplate().query(sql.toString(), annotationREFRowMapper); 175 174 } 176 175 private final RowMapper<ResourceREF> annotationREFRowMapper = new RowMapper<ResourceREF>() { … … 178 177 public ResourceREF mapRow(ResultSet rs, int rowNumber) throws SQLException { 179 178 ResourceREF annotationREF = new ResourceREF(); 180 annotationREF.setRef( Integer.toString(rs.getInt(annotation_id)));179 annotationREF.setRef(externalIDtoURI(_serviceURI, rs.getString(external_id))); 181 180 return annotationREF; 182 181 } … … 188 187 if (annotationID == null) { 189 188 return null; } 190 String sql = "SELECT " + annotationStar + " FROM " + annotationTableName + " WHERE " + annotationAnnotation_id + "= ? LIMIT 1"; 191 List<Annotation> respond = getSimpleJdbcTemplate().query(sql, annotationRowMapper, annotationID); 192 193 if (respond == null) { 194 return null; 195 } 196 197 Annotation result = respond.get(0); 198 String externalId = result.getURI(); 199 result.setURI(extrnalIDtoURI(_serviceURI, externalId)); 200 201 return result; 189 StringBuilder sql = new StringBuilder("SELECT "); 190 sql.append(annotationStar).append(" FROM ").append(annotationTableName).append(" WHERE ").append(annotationAnnotation_id).append("= ? LIMIT 1"); 191 List<Annotation> respond = getSimpleJdbcTemplate().query(sql.toString(), annotationRowMapper, annotationID); 192 return (respond.isEmpty() ? null : respond.get(0)); 202 193 } 203 194 … … 215 206 annotation.setBody(Helpers.deserializeBody(rs.getString(body_xml))); 216 207 annotation.setTargetSources(null); 217 // TODO: fix: rpelace URI in the schema with external id, or make here the conversion: 218 // from external ID in the DB to the URI for the class 219 annotation.setURI(rs.getString(external_id)); 208 annotation.setURI(externalIDtoURI(_serviceURI, rs.getString(external_id))); 220 209 221 210 try { … … 232 221 233 222 private boolean annotationIsInUse(Number sourceID) { 234 String sqlNotebooks = "SELECT " + notebook_id + " FROM " + notebooksAnnotationsTableName + " WHERE " + annotation_id + "= ? LIMIT 1"; 235 List<Number> resultNotebooks = getSimpleJdbcTemplate().query(sqlNotebooks, notebookIDRowMapper, sourceID); 223 StringBuilder sqlNotebooks = new StringBuilder("SELECT "); 224 sqlNotebooks.append(notebook_id).append(" FROM ").append(notebooksAnnotationsTableName).append(" WHERE ").append(annotation_id).append("= ? LIMIT 1"); 225 List<Number> resultNotebooks = getSimpleJdbcTemplate().query(sqlNotebooks.toString(), notebookIDRowMapper, sourceID); 236 226 if (resultNotebooks.size() > 0) { 237 227 return true; 238 228 } 239 String sqlSources = "SELECT " + source_id + " FROM " + annotationsSourcesTableName + " WHERE " + annotation_id + "= ? LIMIT 1"; 240 List<Number> resultSources = getSimpleJdbcTemplate().query(sqlSources, sourceIDRowMapper, sourceID); 229 230 StringBuilder sqlSources = new StringBuilder("SELECT "); 231 sqlSources.append(source_id).append(" FROM ").append(annotationsSourcesTableName).append(" WHERE ").append(annotation_id).append("= ? LIMIT 1"); 232 List<Number> resultSources = getSimpleJdbcTemplate().query(sqlSources.toString(), sourceIDRowMapper, sourceID); 241 233 if (resultSources.size() > 0) { 242 234 return true; 243 235 } 244 String sqlPermissions = "SELECT " + principal_id + " FROM " + permissionsTableName + " WHERE " + annotation_id + "= ? LIMIT 1";245 List<Number> resultPermissions = getSimpleJdbcTemplate().query(sqlPermissions, principalIDRowMapper, sourceID);246 if (resultPermissions.size() > 0) {247 return true;248 }249 236 250 return false; 237 StringBuilder sqlPermissions = new StringBuilder("SELECT "); 238 sqlPermissions.append(principal_id).append(" FROM ").append(permissionsTableName).append(" WHERE ").append(annotation_id).append("= ? LIMIT 1"); 239 List<Number> resultPermissions = getSimpleJdbcTemplate().query(sqlPermissions.toString(), principalIDRowMapper, sourceID); 240 return (resultPermissions.size() > 0); 251 241 } 252 242 … … 282 272 sql.append(",").append(headline).append(",").append(body_xml).append(" ) VALUES (:externalId, :ownerId, :headline, :bodyXml)"); 283 273 int affectedRows = getSimpleJdbcTemplate().update(sql.toString(), params); 284 if (affectedRows == 1) { 285 return getInternalID(externalID); 286 } else { 287 return null; 288 } 289 274 return ((affectedRows > 0) ? getInternalID(externalID) : null); 290 275 } 291 276 … … 296 281 paramsAnnotationsSources.put("annotationId", annotationID); 297 282 paramsAnnotationsSources.put("sourceId", sourceID); 298 String sqlAnnotationsSources = "INSERT INTO " + annotationsSourcesTableName + "(" + annotation_id + "," + source_id + " ) VALUES (:annotationId, :sourceId)";299 int affectedRows = getSimpleJdbcTemplate().update(sqlAnnotationsSources, paramsAnnotationsSources);300 return (affectedRows);283 StringBuilder sqlAnnotationsSources = new StringBuilder("INSERT INTO "); 284 sqlAnnotationsSources.append(annotationsSourcesTableName ).append("(").append(annotation_id).append(",").append(source_id).append(" ) VALUES (:annotationId, :sourceId)"); 285 return getSimpleJdbcTemplate().update(sqlAnnotationsSources.toString(), paramsAnnotationsSources); 301 286 } 302 287 ////////////////////////////////////////////////////////////////////////////////// 303 288 304 289 305 /////////////////// ///////////////////////////////////290 /////////////////// DELETERS ////////////////////////// 306 291 @Override 307 292 public int deleteAnnotation(Number annotationID) throws SQLException { … … 309 294 return 0; 310 295 } 311 312 String sqlAnnotation = "DELETE FROM " + annotationTableName + " where " + annotation_id + " = ?";313 return (getSimpleJdbcTemplate().update(sqlAnnotation , annotationID));296 StringBuilder sqlAnnotation = new StringBuilder("DELETE FROM "); 297 sqlAnnotation.append(annotationTableName).append(" where ").append(annotation_id).append(" = ?"); 298 return (getSimpleJdbcTemplate().update(sqlAnnotation.toString(), annotationID)); 314 299 } 315 300 … … 317 302 @Override 318 303 public int deleteAllAnnotationSource(Number annotationID) throws SQLException { 319 String sqlTargetSources = "DELETE FROM " + annotationsSourcesTableName + " where " + annotation_id + " = ?"; 320 return getSimpleJdbcTemplate().update(sqlTargetSources, annotationID); // removed "annotations_target_sources" rows 304 StringBuilder sqlTargetSources = new StringBuilder("DELETE FROM "); 305 sqlTargetSources.append(annotationsSourcesTableName).append(" WHERE ").append(annotation_id).append(" = ?"); 306 return getSimpleJdbcTemplate().update(sqlTargetSources.toString(), annotationID); // # removed "annotations_target_sources" rows 321 307 322 308 } … … 338 324 @Override 339 325 public int deleteAnnotationPrincipalPermissions(Number annotationID) throws SQLException { 340 String sqlPermissions = "DELETE FROM " + permissionsTableName + " where " + annotation_id + " = ?"; 341 return getSimpleJdbcTemplate().update(sqlPermissions, annotationID); // removed "permission" rows 326 StringBuilder sqlPermissions = new StringBuilder("DELETE FROM "); 327 sqlPermissions.append(permissionsTableName).append(" WHERE ").append(annotation_id).append(" = ?"); 328 return getSimpleJdbcTemplate().update(sqlPermissions.toString(), annotationID); // removed "permission" rows 342 329 343 330 } … … 350 337 paramsPermissions.put("principalId", userID); 351 338 paramsPermissions.put("status", permission.value()); 352 String sqlUpdatePermissionTable = "INSERT INTO " + permissionsTableName + " (" + annotation_id + "," + principal_id + "," + this.permission + ") VALUES (:annotationId, :principalId, :status)"; 353 final int affectedPermissions = getSimpleJdbcTemplate().update(sqlUpdatePermissionTable, paramsPermissions); 339 StringBuilder sqlUpdatePermissionTable = new StringBuilder("INSERT INTO "); 340 sqlUpdatePermissionTable.append(permissionsTableName).append(" (").append(annotation_id).append(",").append(principal_id).append(",").append(this.permission ).append(") VALUES (:annotationId, :principalId, :status)"); 341 final int affectedPermissions = getSimpleJdbcTemplate().update(sqlUpdatePermissionTable.toString(), paramsPermissions); 354 342 return affectedPermissions; 355 343 } … … 362 350 return null; 363 351 } 364 String sql = "SELECT " + principal_id + "," + permission + " FROM " + permissionsTableName + " WHERE " + annotation_id + " = ?";365 List<Map<Number, String>> result = getSimpleJdbcTemplate().query(sql, principalsPermissionsRowMapper, annotationId.toString());366 return result;352 StringBuilder sql = new StringBuilder("SELECT "); 353 sql.append(principal_id).append(",").append(permission).append(" FROM ").append(permissionsTableName).append(" WHERE ").append(annotation_id).append(" = ?"); 354 return getSimpleJdbcTemplate().query(sql.toString(), principalsPermissionsRowMapper, annotationId.toString()); 367 355 } 368 356 private final RowMapper<Map<Number, String>> principalsPermissionsRowMapper = new RowMapper<Map<Number, String>>() {
Note: See TracChangeset
for help on using the changeset viewer.