Changeset 5836 for DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDao.java
- Timestamp:
- 11/18/14 17:52:24 (10 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
r5661 r5836 57 57 internalIdName = annotation_id; 58 58 resourceTableName = annotationTableName; 59 60 59 } 61 60 … … 71 70 StringBuilder sql = new StringBuilder("SELECT "); 72 71 sql.append(principal_id).append(",").append(access).append(" FROM ").append(permissionsTableName).append(" WHERE ").append(annotation_id).append(" = ?"); 73 logger.debug("Parameter " + annotation_id + " := " + annotationID.intValue());74 72 return this.loggedQuery(sql.toString(), principalsAccesssRowMapper, annotationID); 75 73 } 76 77 @Override 78 public Access getAccess(Number annotationID, Number principalID) { 79 74 75 private List<Access> getAccessHelper(Number annotationID, Number principalID){ 80 76 Map<String, Number> params = new HashMap<String, Number>(); 81 77 params.put("annotationId", annotationID); … … 86 82 append(annotation_id).append(" = :annotationId ").append(" AND "). 87 83 append(principal_id).append(" = :principalId").append(" LIMIT 1"); 88 List<Access> result = this.loggedQuery(sql.toString(), accessRowMapper, params); 89 if (result.isEmpty()) { 90 return null; 84 return this.loggedQuery(sql.toString(), accessRowMapper, params); 85 } 86 87 @Override 88 public boolean hasExplicitAccess(Number annotationID, Number principalID) { 89 List<Access> result = this.getAccessHelper(annotationID, principalID); 90 if (result == null || result.isEmpty()) { 91 return false; 92 } else { 93 return true; 94 } 95 } 96 97 @Override 98 public Access getAccess(Number annotationID, Number principalID) { 99 List<Access> result = this.getAccessHelper(annotationID, principalID); 100 if (result == null || result.isEmpty()) { 101 return Access.NONE; 91 102 } else { 92 103 return result.get(0); 93 104 } 94 105 } 95 private final RowMapper<Access> accessRowMapper = new RowMapper<Access>() { 96 @Override 97 public Access mapRow(ResultSet rs, int rowNumber) throws SQLException { 98 return Access.fromValue(rs.getString(access)); 99 } 100 }; 101 102 106 103 107 104 108 ///////////////////////////////////////////////////////////////////// … … 109 113 append(annotation_id).append(" = ? ").append(" LIMIT 1"); 110 114 List<Access> result = this.loggedQuery(sql.toString(), public_RowMapper, annotationID); 111 return result.get(0); 112 } 113 114 115 @Override 116 public List<UUID> getExternalIdFromHeadline(String headline){ 115 if (result == null || result.isEmpty()) { 116 return Access.NONE; 117 } else { 118 return result.get(0); 119 } 120 121 } 122 123 @Override 124 public List<UUID> getExternalIdFromHeadline(String headline) { 117 125 StringBuilder requestDB = new StringBuilder("SELECT "); 118 126 requestDB.append(external_id).append(" FROM ").append(annotationTableName).append(" WHERE ").append("'").append(headline).append("'").append("= ?"); 119 return this.loggedQuery(requestDB.toString(), externalIDRowMapper, headline); 120 } 121 122 @Override 123 public List<Number> getInternalIDsFromHeadline(String headline) {127 return this.loggedQuery(requestDB.toString(), externalIDRowMapper, headline); 128 } 129 130 @Override 131 public List<Number> getInternalIDsFromHeadline(String headline) { 124 132 StringBuilder requestDB = new StringBuilder("SELECT "); 125 133 requestDB.append(annotation_id).append(" FROM ").append(annotationTableName).append(" WHERE ").append("'").append(headline).append("'").append("= ?"); 126 return this.loggedQuery(requestDB.toString(), internalIDRowMapper, headline); 134 return this.loggedQuery(requestDB.toString(), internalIDRowMapper, headline); 127 135 } 128 136 … … 157 165 } 158 166 167 159 168 /////////////////////////////////////////////////////////////////////////////////// 160 @Override 161 public List<Number> getAnnotationIDsForPermission(Number principalID, Access access) { 162 169 //this method does not include all the annotations which are NOT in the pair with principal in this table 170 // they have all default NONE access 171 @Override 172 public List<Number> getAnnotationIDsPermissionAtLeast(Number principalID, Access access) { 163 173 StringBuilder sql = new StringBuilder("SELECT "); 164 174 sql.append(annotation_id).append(" FROM ").append(permissionsTableName).append(" WHERE "). … … 170 180 /// helper /// 171 181 private String sqlAccessConstraint(String column, Access access) { 172 173 182 StringBuilder accessConstraint = new StringBuilder(); 174 183 if (access.equals(Access.READ)) { 175 184 accessConstraint.append("(").append(column).append(" = '").append(Access.READ.value()).append("'"); 176 accessConstraint.append(" OR ").append(column).append(" = '").append(Access.WRITE.value()).append("')"); 185 accessConstraint.append(" OR ").append(column).append(" = '").append(Access.WRITE.value()).append("'"); 186 accessConstraint.append(" OR ").append(column).append(" = '").append(Access.ALL.value()).append("')"); 177 187 } else { 178 accessConstraint.append(column).append(" = '").append(access.value()).append("'"); 179 } 180 188 if (access.equals(Access.WRITE)) { 189 accessConstraint.append("(").append(column).append(" = '").append(Access.WRITE.value()).append("'"); 190 accessConstraint.append(" OR ").append(column).append(" = '").append(Access.ALL.value()).append("')"); 191 } else if (access.equals(Access.ALL)) { 192 accessConstraint.append("(").append(column).append(" = '").append(Access.ALL.value()).append("')"); 193 } else { 194 accessConstraint.append("(").append(column).append(" = '").append(Access.NONE.value()).append("')"); 195 } 196 } 181 197 return accessConstraint.toString(); 182 198 } … … 184 200 ///////////// 185 201 @Override 186 public List<Number> getAnnotationIDs ForPublicAccess(Access access) {202 public List<Number> getAnnotationIDsPublicAtLeast(Access access) { 187 203 StringBuilder sql = new StringBuilder("SELECT "); 188 204 sql.append(annotation_id).append(" FROM ").append(annotationTableName).append(" WHERE "). … … 190 206 return this.loggedQuery(sql.toString(), internalIDRowMapper); 191 207 } 192 193 194 208 195 209 ///////////////////////////////////////// … … 317 331 annotation.setTargets(null); 318 332 String externalId = rs.getString(external_id); 319 annotation.setId(externalId); 333 annotation.setId(externalId); 320 334 annotation.setHref(externalIDtoHref(externalId)); 321 335 annotation.setLastModified(timeStampToXMLGregorianCalendar(rs.getString(last_modified))); … … 335 349 } 336 350 337 ///////////////////////////// 338 // @Override 339 // public boolean annotationIsInUse(Number annotationID) { 340 // StringBuilder sqlNotebooks = new StringBuilder("SELECT "); 341 // sqlNotebooks.append(notebook_id).append(" FROM ").append(notebooksAnnotationsTableName).append(" WHERE ").append(annotation_id).append("= ? LIMIT 1"); 342 // List<Number> resultNotebooks = this.loggedQuery(sqlNotebooks.toString(), notebookIDRowMapper, annotationID); 343 // if (resultNotebooks.size() > 0) { 344 // return true; 345 // } 346 // 347 // StringBuilder sqlTargets = new StringBuilder("SELECT "); 348 // sqlTargets.append(target_id).append(" FROM ").append(annotationsTargetsTableName).append(" WHERE ").append(annotation_id).append("= ? LIMIT 1"); 349 // List<Number> resultTargets = this.loggedQuery(sqlTargets.toString(), targetIDRowMapper, annotationID); 350 // if (resultTargets.size() > 0) { 351 // return true; 352 // } 353 // 354 // StringBuilder sqlAccesss = new StringBuilder("SELECT "); 355 // sqlAccesss.append(principal_id).append(" FROM ").append(permissionsTableName).append(" WHERE ").append(annotation_id).append("= ? LIMIT 1"); 356 // List<Number> resultAccesss = this.loggedQuery(sqlAccesss.toString(), principalIDRowMapper, annotationID); 357 // return (resultAccesss.size() > 0); 358 // } 351 359 352 @Override 360 353 public List<Number> getAnnotations(Number notebookID) { … … 395 388 return affectedRows; 396 389 } 397 398 390 391 @Override 399 392 public int updateAnnotationHeadline(Number annotationID, String header) { 400 393 Map<String, Object> params = new HashMap<String, Object>(); … … 416 409 417 410 String[] body = retrieveBodyComponents(annotation.getBody()); 418 411 419 412 Map<String, Object> params = new HashMap<String, Object>(); 420 413 params.put("owner", newOwnerID); … … 423 416 params.put("headline", annotation.getHeadline()); 424 417 params.put("isXml", annotation.getBody().getXmlBody() != null); 425 params.put("externalId", annotation.getId()); 418 params.put("externalId", annotation.getId()); 419 params.put("publicAccess", annotation.getPermissions().getPublic().value()); 426 420 params.put("annotationId", annotationID); 427 421 … … 434 428 append(last_modified).append("= default,"). 435 429 append(is_xml).append("= :isXml, "). 436 append(external_id).append("= :externalId"). 437 append(" WHERE ").append(annotation_id).append("= :annotationId"); 430 append(external_id).append("= :externalId, "). 431 append(public_).append("= :publicAccess"). 432 append(" WHERE ").append(annotation_id).append("= :annotationId"); 438 433 int affectedRows = this.loggedUpdate(sql.toString(), params); 439 434 440 435 return affectedRows; 441 436 } 442 437 443 438 @Override 444 public int update AnnotationPrincipalAccess(Number annotationID, Number principalID, Access access) {439 public int updatePermission(Number annotationID, Number principalID, Access access) { 445 440 446 441 Map<String, Object> params = new HashMap<String, Object>(); … … 460 455 461 456 @Override 462 public int updatePublicA ttribute(Number annotationID, Access access) {457 public int updatePublicAccess(Number annotationID, Access access) { 463 458 464 459 Map<String, Object> params = new HashMap<String, Object>(); … … 486 481 params.put("bodyText", body[0]); 487 482 params.put("bodyMimeType", body[1]); 488 params.put("isXml", annotation.getBody().getXmlBody() != null); 483 params.put("isXml", annotation.getBody().getXmlBody() != null); 484 params.put("publicAccess", annotation.getPermissions().getPublic().value()); 489 485 490 486 StringBuilder sql = new StringBuilder("INSERT INTO "); 491 487 sql.append(annotationTableName).append("(").append(external_id).append(",").append(owner_id); 492 sql.append(",").append(headline).append(",").append(body_text).append(",").append(body_mimetype).append(",").append(is_xml). 493 append(" ) VALUES (:externalId, :owner, :headline, :bodyText, :bodyMimeType, :isXml )");488 sql.append(",").append(headline).append(",").append(body_text).append(",").append(body_mimetype).append(",").append(is_xml).append(",").append(public_). 489 append(" ) VALUES (:externalId, :owner, :headline, :bodyText, :bodyMimeType, :isXml, :publicAccess)"); 494 490 int affectedRows = this.loggedUpdate(sql.toString(), params); 495 491 return getInternalID(externalID); … … 509 505 ///////////////////////////////////////////////////////////////////////////////////////// 510 506 @Override 511 public int add AnnotationPrincipalAccess(Number annotationID, Number principalID, Access access) {507 public int addPermission(Number annotationID, Number principalID, Access access) { 512 508 513 509 Map<String, Object> paramsAccesss = new HashMap<String, Object>(); … … 541 537 ////////////////////////////////////////////////////// 542 538 @Override 543 public int delete AnnotationPermissions(Number annotationID) {539 public int deletePermissions(Number annotationID) { 544 540 StringBuilder sqlAccesss = new StringBuilder("DELETE FROM "); 545 541 sqlAccesss.append(permissionsTableName).append(" WHERE ").append(annotation_id).append(" = ?"); 546 542 return this.loggedUpdate(sqlAccesss.toString(), annotationID); // removed "access" rows 547 543 } 548 549 //////////////////////////////////////// 550 @Override 551 public int deleteAnnotationFromAllNotebooks(Number annotationID) { 552 StringBuilder sql = new StringBuilder("DELETE FROM "); 553 sql.append(notebooksAnnotationsTableName).append(" WHERE ").append(annotation_id).append(" = ?"); 554 return this.loggedUpdate(sql.toString(), annotationID); // removed "notebook-annotation" rows 555 556 } 557 544 558 545 ////////////////////////////////////////////////////// 559 546 @Override 560 public int delete AnnotationPrincipalAccess(Number annotationID, Number principalID) {547 public int deletePermission(Number annotationID, Number principalID) { 561 548 Map<String, Number> params = new HashMap(); 562 549 params.put("annotationId", annotationID); … … 568 555 569 556 } 557 558 //////////////////////////////////////// 559 @Override 560 public int deleteAnnotationFromAllNotebooks(Number annotationID) { 561 StringBuilder sql = new StringBuilder("DELETE FROM "); 562 sql.append(notebooksAnnotationsTableName).append(" WHERE ").append(annotation_id).append(" = ?"); 563 return this.loggedUpdate(sql.toString(), annotationID); // removed "notebook-annotation" rows 564 565 } 566 567 570 568 /////////////// helpers ////////////////// 571 569
Note: See TracChangeset
for help on using the changeset viewer.