Changeset 5138
- Timestamp:
- 05/06/14 15:32:03 (10 years ago)
- Location:
- DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/PrincipalExists.java
r4995 r5138 18 18 package eu.dasish.annotation.backend; 19 19 20 import org.springframework.dao.DuplicateKeyException; 21 20 22 /** 21 23 * … … 28 30 } 29 31 32 public PrincipalExists(DuplicateKeyException e){ 33 super(e); 34 } 35 30 36 } -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/AnnotationDao.java
r5086 r5138 58 58 public List<Number> getAnnotationIDsForPublicAccess(Access access); 59 59 60 61 public List<Number> getAnnotationIDsForTargets(List<Number> TargetIDs); 62 60 63 61 /* 64 62 * Use inly in the debugging mode to acces all the existing annotations. … … 104 102 */ 105 103 public Access getAccess(Number annotationID, Number principalID); 104 106 105 107 106 public Access getPublicAttribute(Number annotationID); -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/TargetDao.java
r4941 r5138 58 58 public Map<Number, String> getCachedRepresentationFragmentPairs(Number targetID); 59 59 60 /** 61 * 62 * @param subword 63 * @return the list of Target ID's which link-fields contain "subword" as a 64 * substring. 65 */ 66 public List<Number> getTargetsReferringTo(String subword); 60 67 61 68 62 /** … … 82 76 boolean cachedIsInUse(Number cachedID); 83 77 84 public List<Number> retrieveTargetIDs(Number annotationID);78 public List<Number> getTargetIDs(Number annotationID); 85 79 86 80 /** -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/DBDispatcherImlp.java
r5122 r5138 56 56 import java.io.IOException; 57 57 import java.io.InputStream; 58 import java.io.UnsupportedEncodingException; 58 59 import java.lang.Number; 60 import java.net.URLEncoder; 59 61 import java.util.ArrayList; 60 62 import java.util.HashMap; … … 137 139 Annotation result = annotationDao.getAnnotationWithoutTargetsAndPemissions(annotationID); 138 140 result.setOwnerRef(principalDao.getURIFromInternalID(annotationDao.getOwner(annotationID))); 139 List<Number> targetIDs = targetDao. retrieveTargetIDs(annotationID);141 List<Number> targetIDs = targetDao.getTargetIDs(annotationID); 140 142 TargetInfoList sis = new TargetInfoList(); 141 143 for (Number targetID : targetIDs) { … … 180 182 //////////////////////////////////////////////////////////////////////// 181 183 @Override 182 public List<Number> getFilteredAnnotationIDs(UUID ownerId, String link , String text, Number inloggedPrincipalID, String accessMode, String namespace, String after, String before) throws NotInDataBaseException {184 public List<Number> getFilteredAnnotationIDs(UUID ownerId, String linkSubstring, String text, Number inloggedPrincipalID, String accessMode, String namespace, String after, String before) throws NotInDataBaseException { 183 185 184 186 Number ownerID; … … 187 189 if (accessMode.equals("owner")) { 188 190 if (!ownerId.equals(principalDao.getExternalID(inloggedPrincipalID))) { 189 logger. debug("The inlogged principal is demanded to be the owner of the annotations, however the expected owner is different and has the UUID " + ownerId.toString());191 logger.info("The inlogged principal is demanded to be the owner of the annotations, however the expected owner is different and has the UUID " + ownerId.toString()); 190 192 return new ArrayList<Number>(); 191 193 } else { … … 205 207 206 208 207 209 //Filtering on the columns of the annotation table 208 210 List<Number> annotationIDs = annotationDao.getFilteredAnnotationIDs(ownerID, text, namespace, after, before); 209 211 210 //filtering on tables "target" and "annotations_targets" 211 if (link != null) { 212 List<Number> targetIDs = targetDao.getTargetsReferringTo(link); 213 List<Number> annotationIDsForTargets = annotationDao.getAnnotationIDsForTargets(targetIDs); 214 annotationIDs.retainAll(annotationIDsForTargets); 215 }; 216 217 if (!accessMode.equals("owner")) { 218 Access access = Access.fromValue(accessMode); 219 List<Number> annotationIDsAccess = annotationDao.getAnnotationIDsForPermission(inloggedPrincipalID, access); 220 List<Number> annotationIDsPublic = annotationDao.getAnnotationIDsForPublicAccess(access); 221 if (accessMode.equals("read")) { 222 List<Number> writeIDs = annotationDao.getAnnotationIDsForPermission(inloggedPrincipalID, Access.WRITE); 223 annotationIDsAccess.addAll(writeIDs); 224 List<Number> writeIDsPublic = annotationDao.getAnnotationIDsForPublicAccess(Access.WRITE); 225 annotationIDsPublic.addAll(writeIDsPublic); 226 } 227 int check = this.addAllNoRepetitions(annotationIDsAccess, annotationIDsPublic); 228 List<Number> ownedAnnotIDs = annotationDao.getFilteredAnnotationIDs(inloggedPrincipalID, null, null, null, null); 229 boolean checkTwo = annotationIDsAccess.addAll(ownedAnnotIDs); 230 annotationIDs.retainAll(annotationIDsAccess); 212 213 // Filetring on accessMode 214 if (annotationIDs != null) { 215 if (!annotationIDs.isEmpty()) { 216 if (!accessMode.equals("owner")) { 217 Access access = Access.fromValue(accessMode); 218 List<Number> annotationIDsAccess = annotationDao.getAnnotationIDsForPermission(inloggedPrincipalID, access); 219 List<Number> annotationIDsPublic = annotationDao.getAnnotationIDsForPublicAccess(access); 220 List<Number> annotationIDsOwned = annotationDao.getFilteredAnnotationIDs(inloggedPrincipalID, null, null, null, null); 221 int check1 = this.addAllNoRepetitions(annotationIDsAccess, annotationIDsPublic); 222 int check2 = this.addAllNoRepetitions(annotationIDsAccess, annotationIDsOwned); 223 annotationIDs.retainAll(annotationIDsAccess); 224 } 225 } 226 227 // filtering on reference 228 return this.filterAnnotationIDsOnReference(annotationIDs, linkSubstring); 231 229 } 232 230 233 231 return annotationIDs; 234 } 235 236 /// helper /// 232 233 } 234 235 /// helpers /// 236 private List<Number> filterAnnotationIDsOnReference(List<Number> annotationIDs, String linkSubstring) { 237 if (linkSubstring != null) { 238 if (!linkSubstring.isEmpty()) { 239 if (annotationIDs != null) { 240 List<Number> result = new ArrayList(); 241 for (Number annotationID : annotationIDs) { 242 List<Number> targets = targetDao.getTargetIDs(annotationID); 243 for (Number targetID : targets) { 244 if (!result.contains(annotationID)) { 245 String link = targetDao.getLink(targetID); 246 if (link.contains(linkSubstring)) { 247 result.add(annotationID); 248 } else { 249 try { 250 String urlEncoded = URLEncoder.encode(linkSubstring, "UTF-8"); 251 if (link.contains(urlEncoded)) { 252 result.add(annotationID); 253 } 254 } catch (UnsupportedEncodingException e) { 255 } 256 } 257 } 258 } 259 } 260 return result; 261 } 262 } 263 } 264 return annotationIDs; 265 } 266 237 267 public int addAllNoRepetitions(List<Number> list, List<Number> listToAdd) { 238 268 int result = 0; … … 259 289 public ReferenceList getAnnotationTargets(Number annotationID) { 260 290 ReferenceList result = new ReferenceList(); 261 List<Number> targetIDs = targetDao. retrieveTargetIDs(annotationID);291 List<Number> targetIDs = targetDao.getTargetIDs(annotationID); 262 292 for (Number targetID : targetIDs) { 263 293 result.getRef().add(targetDao.getURIFromInternalID(targetID)); … … 270 300 271 301 List<String> result = new ArrayList<String>(); 272 List<Number> targetIDs = targetDao. retrieveTargetIDs(annotationID);302 List<Number> targetIDs = targetDao.getTargetIDs(annotationID); 273 303 for (Number targetID : targetIDs) { 274 304 List<Number> versions = cachedRepresentationDao.getCachedRepresentationsForTarget(targetID); … … 390 420 return Access.READ; 391 421 } else { 392 return access;422 return access; 393 423 } 394 424 } else { … … 427 457 return true; 428 458 } 429 String access = this.getAccess(resourceID, principalID).name(); 430 String actionName = action.name(); 431 return access.equals(actionName); 459 Access access = this.getAccess(resourceID, principalID); 460 return this.greaterOrEqual(access, action); 432 461 } 433 462 case CACHED_REPRESENTATION: { … … 444 473 } 445 474 475 } 476 477 private boolean greaterOrEqual(Access access, ResourceAction action) { 478 if (access.equals(Access.WRITE) && (action.equals(ResourceAction.READ) || action.equals(ResourceAction.WRITE))) { 479 return true; 480 } 481 if (access.equals(Access.READ) && action.equals(ResourceAction.READ)) { 482 return true; 483 } 484 return false; 446 485 } 447 486 ////// noetbooks /////// … … 623 662 return annotationDao.updateAnnotationBody(internalID, body[0], body[1], annotationBody.getXmlBody() != null); 624 663 } 625 664 626 665 @Override 627 666 public int updateAnnotationHeadline(Number internalID, String newHeader) { … … 789 828 int[] result = new int[5]; 790 829 result[1] = annotationDao.deleteAnnotationPermissions(annotationID); 791 List<Number> targetIDs = targetDao. retrieveTargetIDs(annotationID);830 List<Number> targetIDs = targetDao.getTargetIDs(annotationID); 792 831 result[2] = annotationDao.deleteAllAnnotationTarget(annotationID); 793 832 result[3] = 0; -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDao.java
r5086 r5138 99 99 } 100 100 }; 101 102 101 103 102 104 ///////////////////////////////////////////////////////////////////// … … 174 176 } 175 177 176 ////////////////////////////// 177 @Override 178 public List<Number> getAnnotationIDsForTargets(List<Number> targetIDs) { 179 180 if (targetIDs.isEmpty()) { 181 return new ArrayList<Number>(); 182 } 183 String values = makeListOfValues(targetIDs); 184 StringBuilder query = new StringBuilder("SELECT DISTINCT "); 185 query.append(annotation_id).append(" FROM ").append(annotationsTargetsTableName).append(" WHERE ").append(target_id).append(" IN "); 186 query.append(values); 187 return this.loggedQuery(query.toString(), internalIDRowMapper); 188 } 178 189 179 190 180 ///////////////////////////////////////// -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcTargetDao.java
r4941 r5138 22 22 import eu.dasish.annotation.schema.Target; 23 23 import eu.dasish.annotation.schema.TargetInfo; 24 import java.io.UnsupportedEncodingException; 25 import java.net.URLEncoder; 24 26 import java.sql.ResultSet; 25 27 import java.sql.SQLException; … … 30 32 import java.util.UUID; 31 33 import javax.sql.DataSource; 32 import javax.xml.datatype.DatatypeConfigurationException;33 34 import javax.xml.datatype.XMLGregorianCalendar; 34 35 import org.slf4j.Logger; … … 43 44 44 45 private final Logger loggerTargetDao = LoggerFactory.getLogger(JdbcTargetDao.class); 46 private final String encoding = "ISO-8859-1"; 45 47 46 48 public JdbcTargetDao(DataSource dataTarget) { … … 74 76 75 77 @Override 76 public String getLink(Number internalID) {78 public String getLink(Number internalID) { 77 79 StringBuilder sql = new StringBuilder("SELECT "); 78 80 sql.append(targetStar).append(" FROM ").append(targetTableName).append(" WHERE ").append(target_id).append("= ? LIMIT 1"); … … 134 136 }; 135 137 136 ///////////////////////////////////////////////////// 137 @Override 138 public List<Number> getTargetsReferringTo(String word) { 139 if (word == null) { 140 loggerTargetDao.debug("word: " + nullArgument); 141 return new ArrayList<Number>(); 142 } 143 String searchTerm = "%" + word + "%"; 144 StringBuilder sql = new StringBuilder("SELECT "); 145 sql.append(target_id).append(" FROM ").append(targetTableName).append(" WHERE ").append(link_uri).append(" LIKE ? "); 146 return this.loggedQuery(sql.toString(), internalIDRowMapper, searchTerm); 147 } 148 138 149 139 ///////////////////////////////////////////////////// 150 140 @Override … … 175 165 176 166 @Override 177 public List<Number> retrieveTargetIDs(Number annotationID) {167 public List<Number> getTargetIDs(Number annotationID) { 178 168 StringBuilder sql = new StringBuilder("SELECT DISTINCT "); 179 169 sql.append(target_id).append(" FROM ").append(annotationsTargetsTableName).append(" WHERE ").append(annotation_id).append("= ?"); … … 181 171 182 172 } 183 173 184 174 //////// UPDATERS ////////// 185 175 @Override 186 public int updateTargetCachedRepresentationFragment(Number targetID, Number cachedID, String fragmentDescription) {187 188 Map<String, Object> params = new HashMap<String, Object>();176 public int updateTargetCachedRepresentationFragment(Number targetID, Number cachedID, String fragmentDescription) { 177 178 Map<String, Object> params = new HashMap<String, Object>(); 189 179 params.put("targetID", targetID); 190 180 params.put("cachedID", cachedID); … … 199 189 ///////////////////////// ADDERS ///////////////////////////////// 200 190 @Override 201 public Number addTarget(Target target) throws NotInDataBaseException {191 public Number addTarget(Target target) throws NotInDataBaseException { 202 192 203 193 UUID externalID = UUID.randomUUID(); … … 217 207 @Override 218 208 public int addTargetCachedRepresentation(Number targetID, Number cachedID, String fragmentDescriptor) { 219 209 220 210 Map<String, Object> paramsJoint = new HashMap<String, Object>(); 221 211 paramsJoint.put("targetId", targetID); … … 229 219 @Override 230 220 public int deleteTarget(Number internalID) { 231 221 232 222 StringBuilder sqlTargetsVersions = new StringBuilder("DELETE FROM "); 233 223 sqlTargetsVersions.append(targetTableName).append(" WHERE ").append(target_id).append(" = ? "); -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/rest/PrincipalResource.java
r5088 r5138 47 47 import javax.xml.bind.JAXBElement; 48 48 import javax.xml.parsers.ParserConfigurationException; 49 import org.springframework.dao.DuplicateKeyException; 49 50 import org.springframework.stereotype.Component; 50 51 import org.springframework.transaction.annotation.Transactional; … … 78 79 return (result != null) ? (new ObjectFactory().createPrincipal(result)) : (new ObjectFactory().createPrincipal(new Principal())); 79 80 } 80 81 81 82 private class GetPrincipal implements ILambda<Map, Principal> { 82 83 83 84 @Override … … 87 88 } 88 89 } 89 90 ///////////////////////////////// 91 90 91 ///////////////////////////////// 92 92 @GET 93 93 @Produces(MediaType.TEXT_PLAIN) … … 101 101 return "The admin of the server database " + dbDispatcher.getDataBaseAdmin().getDisplayName() + " is availiable via e-mail " + dbDispatcher.getDataBaseAdmin().getEMail(); 102 102 } 103 104 /////////////////////////////////////////103 104 ///////////////////////////////////////// 105 105 @GET 106 106 @Produces(MediaType.TEXT_XML) … … 113 113 return (result != null) ? (new ObjectFactory().createPrincipal(result)) : (new ObjectFactory().createPrincipal(new Principal())); 114 114 } 115 116 115 117 116 private class GetPrincipalByInfo implements ILambda<Map, Principal> { … … 135 134 return (result != null) ? (new ObjectFactory().createCurrentPrincipalInfo(result)) : (new ObjectFactory().createCurrentPrincipalInfo(new CurrentPrincipalInfo())); 136 135 } 137 138 136 137 private class GetCurrentPrincipalInfo implements ILambda<Map, CurrentPrincipalInfo> { 139 138 140 139 @Override … … 159 158 160 159 if (dbDispatcher.getTypeOfPrincipalAccount(remotePrincipalID).equals(admin)) { 161 int result = dbDispatcher.addSpringUser(remoteId, password, shaStrength, remoteId); 162 return result + " record(s) has been added. Must be 2: 1 record for the principal, another for the authorities table."; 160 try { 161 int result = dbDispatcher.addSpringUser(remoteId, password, shaStrength, remoteId); 162 return result + " record(s) has been added. Must be 2: 1 record for the principal, another for the authorities table."; 163 } catch (DuplicateKeyException e) { 164 loggerServer.error(e.toString()); 165 httpServletResponse.sendError(HttpServletResponse.SC_BAD_REQUEST); 166 return e.toString(); 167 } 163 168 } else { 164 169 this.ADMIN_RIGHTS_EXPECTED(); … … 168 173 169 174 } 170 175 171 176 /////////////////////////////////////// 172 173 177 @POST 174 178 @Consumes(MediaType.APPLICATION_XML) … … 195 199 196 200 } 197 198 201 202 private class AddPrincipal implements ILambdaPrincipal<Map, Principal> { 199 203 200 204 @Override … … 205 209 } 206 210 207 208 ///////////////////////////////////// 209 211 ///////////////////////////////////// 210 212 @POST 211 213 @Consumes(MediaType.APPLICATION_FORM_URLENCODED) … … 228 230 return (new RequestWrappers(this)).wrapAddPrincipalRequest(params, new RegisterNonShibbolizedPrincipal()); 229 231 } 230 232 231 233 private class RegisterNonShibbolizedPrincipal implements ILambdaPrincipal<Map, Principal> { 232 234 233 235 @Override 234 236 public Principal apply(Map params) throws NotInDataBaseException, PrincipalExists { 235 final int updatedSpringTables = dbDispatcher.addSpringUser((String) params.get("remoteId"), (String) params.get("password"), (Integer) params.get("shaStrength"), (String) params.get("remoteId")); 236 final Number principalID = dbDispatcher.addPrincipal((Principal) params.get("newPrincipal"), (String) params.get("remoteId")); 237 return dbDispatcher.getPrincipal(principalID); 238 } 239 } 240 241 242 /////////////////////////////////////////////// 243 237 try { 238 final int updatedSpringTables = dbDispatcher.addSpringUser((String) params.get("remoteId"), (String) params.get("password"), (Integer) params.get("shaStrength"), (String) params.get("remoteId")); 239 final Number principalID = dbDispatcher.addPrincipal((Principal) params.get("newPrincipal"), (String) params.get("remoteId")); 240 return dbDispatcher.getPrincipal(principalID); 241 } catch (DuplicateKeyException e) { 242 throw new PrincipalExists(e); 243 } 244 } 245 } 246 247 /////////////////////////////////////////////// 244 248 @POST 245 249 @Consumes(MediaType.APPLICATION_FORM_URLENCODED) … … 260 264 return (new RequestWrappers(this)).wrapAddPrincipalRequest(params, new AddPrincipal()); 261 265 } 262 266 263 267 /////////////////////////////////////////////////// 264 265 268 @POST 266 269 @Consumes(MediaType.APPLICATION_FORM_URLENCODED) … … 269 272 public String registerShibbolizedPrincipalAsNonShibb(@FormParam("remoteId") String remoteId, @FormParam("password") String password) 270 273 throws IOException { 271 int result = dbDispatcher.addSpringUser(remoteId, password, shaStrength, remoteId); 272 return result + " record(s) has been added. Must be 2: 1 record for the principal, another for the authorities table."; 273 274 try { 275 int result = dbDispatcher.addSpringUser(remoteId, password, shaStrength, remoteId); 276 return result + " record(s) has been added. Must be 2: 1 record for the principal, another for the authorities table."; 277 } catch (DuplicateKeyException e) { 278 loggerServer.error(e.toString()); 279 httpServletResponse.sendError(HttpServletResponse.SC_BAD_REQUEST); 280 return e.toString(); 281 } 274 282 } 275 283 … … 303 311 public JAXBElement<Principal> updatePrincipalFromForm(@FormParam("name") String name, @FormParam("email") String email) 304 312 throws IOException { 305 313 306 314 Principal newPrincipal = new Principal(); 307 315 newPrincipal.setDisplayName(name); … … 312 320 return (result != null) ? (new ObjectFactory().createPrincipal(result)) : (new ObjectFactory().createPrincipal(new Principal())); 313 321 } 314 315 316 private class UpdatePrincipal implements ILambda<Map, Principal> { 322 323 private class UpdatePrincipal implements ILambda<Map, Principal> { 324 317 325 @Override 318 326 public Principal apply(Map params) throws NotInDataBaseException { 319 327 Principal principal = (Principal) params.get("newPrincipal"); 320 Number principalID = (Number) params.get("principalID"); 328 Number principalID = (Number) params.get("principalID"); 321 329 String uri = dbDispatcher.getResourceURI(principalID, Resource.PRINCIPAL); 322 330 principal.setURI(uri); … … 325 333 } 326 334 } 327 328 ////////////////////////////////////// 329 335 336 ////////////////////////////////////// 330 337 @PUT 331 338 @Produces(MediaType.TEXT_PLAIN) … … 394 401 return (httpServletRequest.getRemoteUser()).equals(dbDispatcher.getPrincipalRemoteID(principalID)); 395 402 } 396 397 403 } -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/webapp/index.jsp
r5022 r5138 51 51 GET <a href="api/principals/00000000-0000-0000-0000-0000000000112/current">api/principals/00000000-0000-0000-0000-0000000000112/current</a> !Problem: how to ask the servlet if the given user is logged in, may be by some other running somewhere client<br> 52 52 GET <a href="api/principals/info?email=Twan.Goosen@mpi.nl">api/principals/info?email=Twan.Goosen@mpi.nl</a> <br> 53 GET <a href="api/annotations?link=Sagrada ">api/annotations?link=Sagrada</a> <br>54 GET <a href="api/annotations?link= Gaud">api/annotations?link=Gaud</a> <br>53 GET <a href="api/annotations?link=Sagrada_Família">api/annotations?link=Sagrada_Família</a> <br> 54 GET <a href="api/annotations?link=Antoni_Gaud%C3%AD">api/annotations?link=Antoni_Gaud%C3%AD</a> <br> 55 55 GET <a href="api/annotations?after=2014-02-04 15:57:58.046908&before=2014-04-06 10:08:16.213186">api/annotations?after=2014-02-04 15:57:58.046908&before=2014-04-06 10:08:16.213186</a> 56 56 !Comment: What is "namespace" query parameter? Must be implemented and tested <br> -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/DBDispatcherTest.java
r5088 r5138 237 237 will(returnValue(uri1)); 238 238 239 oneOf(targetDao). retrieveTargetIDs(1);239 oneOf(targetDao).getTargetIDs(1); 240 240 will(returnValue(mockTargetIDs)); 241 241 … … 300 300 public void testGetFilteredAnnotationIDs() throws NotInDataBaseException { 301 301 System.out.println("test getFilteredAnnotationIDs"); 302 303 final List<Number> mockTargetIDs = new ArrayList<Number>(); 304 mockTargetIDs.add(1); 305 mockTargetIDs.add(2); 306 302 307 303 final List<Number> mockAnnotationIDs1 = new ArrayList<Number>(); 308 304 mockAnnotationIDs1.add(1); 309 310 final List<Number> mockAnnotationIDs2 = new ArrayList<Number>(); 311 mockAnnotationIDs2.add(1); 312 mockAnnotationIDs2.add(2); 313 314 305 315 306 final List<Number> mockAnnotationIDsOwned = new ArrayList<Number>(); 316 307 mockAnnotationIDsOwned.add(3); … … 318 309 final List<Number> mockAnnotationIDsRead = new ArrayList<Number>(); 319 310 mockAnnotationIDsRead.add(1); 311 mockAnnotationIDsRead.add(2); 312 313 314 final List<Number> mockAnnotationIDsPublicRead = new ArrayList<Number>(); 315 mockAnnotationIDsPublicRead.add(1); 316 mockAnnotationIDsPublicRead.add(2); 317 318 final List<Number> mockTargets1 = new ArrayList<Number>(); 319 mockTargets1.add(1); 320 mockTargets1.add(2); 321 322 323 final String link1 = "http://nl.wikipedia.org/wiki/Sagrada_Fam%C3%ADlia"; 324 final String link2 = "http://nl.wikipedia.org/wiki/Antoni_Gaud%C3%AD"; 325 326 final String after = (new Timestamp(0)).toString(); 327 final String before = (new Timestamp(System.currentTimeMillis())).toString(); 328 329 final Number loggedIn = 3; 330 331 mockeryDao.checking(new Expectations() { 332 { 333 334 335 oneOf(annotationDao).getFilteredAnnotationIDs(null, "some html 1", null, after, before); 336 will(returnValue(mockAnnotationIDs1)); 337 338 oneOf(annotationDao).getAnnotationIDsForPermission(loggedIn, Access.READ); 339 will(returnValue(mockAnnotationIDsRead)); 340 341 oneOf(annotationDao).getAnnotationIDsForPublicAccess(Access.READ); 342 will(returnValue(mockAnnotationIDsPublicRead)); 343 344 oneOf(annotationDao).getFilteredAnnotationIDs(loggedIn, null, null, null, null); 345 will(returnValue(mockAnnotationIDsOwned)); 346 347 oneOf(targetDao).getTargetIDs(1); 348 will(returnValue(mockTargets1)); 349 350 oneOf(targetDao).getLink(1); 351 will(returnValue(link1)); 352 353 oneOf(targetDao).getLink(2); 354 will(returnValue(link2)); 355 356 357 } 358 }); 359 360 361 List result = dbDispatcher.getFilteredAnnotationIDs(null, "Sagrada_Fam%C3%ADlia", "some html 1", 3, "read", null, after, before); 362 assertEquals(1, result.size()); 363 assertEquals(1, result.get(0)); 364 } 365 366 @Test 367 public void testGetFilteredAnnotationIDs2() throws NotInDataBaseException { 368 System.out.println("test getFilteredAnnotationIDs"); 369 370 371 final List<Number> mockAnnotationIDs1 = new ArrayList<Number>(); 372 mockAnnotationIDs1.add(1); 373 374 375 final List<Number> mockAnnotationIDsOwned = new ArrayList<Number>(); 376 mockAnnotationIDsOwned.add(3); 320 377 321 378 final List<Number> mockAnnotationIDsWrite = new ArrayList<Number>(); 322 379 mockAnnotationIDsWrite.add(2); 323 324 final List<Number> mockAnnotationIDsPublicRead = new ArrayList<Number>(); 325 mockAnnotationIDsRead.add(2); 380 326 381 327 382 final List<Number> mockAnnotationIDsPublicWrite = new ArrayList<Number>(); 328 mockAnnotationIDsWrite.add(1); 383 mockAnnotationIDsPublicWrite.add(1); 384 385 final List<Number> mockTargets1 = new ArrayList<Number>(); 386 mockTargets1.add(1); 387 mockTargets1.add(2); 388 389 390 final String link1 = "http://nl.wikipedia.org/wiki/Sagrada_Fam%C3%ADlia"; 391 final String link2 = "http://nl.wikipedia.org/wiki/Antoni_Gaud%C3%AD"; 329 392 330 393 final String after = (new Timestamp(0)).toString(); 331 394 final String before = (new Timestamp(System.currentTimeMillis())).toString(); 332 395 333 // final List<Number> mockRetval = new ArrayList<Number>();334 // mockRetval.add(1);335 336 396 final Number loggedIn = 3; 337 397 338 398 mockeryDao.checking(new Expectations() { 339 399 { 340 oneOf(targetDao).getTargetsReferringTo("nl.wikipedia.org"); 341 will(returnValue(mockTargetIDs)); 342 343 oneOf(annotationDao).getAnnotationIDsForTargets(mockTargetIDs); 344 will(returnValue(mockAnnotationIDs2)); 400 345 401 346 402 oneOf(annotationDao).getFilteredAnnotationIDs(null, "some html 1", null, after, before); 347 403 will(returnValue(mockAnnotationIDs1)); 348 404 349 oneOf(annotationDao).getAnnotationIDsForPermission(loggedIn, Access.READ);350 will(returnValue(mockAnnotationIDsRead));351 352 oneOf(annotationDao).getAnnotationIDsForPublicAccess(Access.READ);353 will(returnValue(mockAnnotationIDsPublicRead));354 355 405 oneOf(annotationDao).getAnnotationIDsForPermission(loggedIn, Access.WRITE); 356 406 will(returnValue(mockAnnotationIDsWrite)); 357 407 358 408 oneOf(annotationDao).getAnnotationIDsForPublicAccess(Access.WRITE); 359 will(returnValue(mockAnnotationIDsPublicWrite)); 409 will(returnValue(mockAnnotationIDsPublicWrite)); 360 410 361 411 oneOf(annotationDao).getFilteredAnnotationIDs(loggedIn, null, null, null, null); 362 412 will(returnValue(mockAnnotationIDsOwned)); 363 364 } 365 }); 366 367 368 List result = dbDispatcher.getFilteredAnnotationIDs(null, "nl.wikipedia.org", "some html 1", 3, "read", null, after, before); 413 414 oneOf(targetDao).getTargetIDs(1); 415 will(returnValue(mockTargets1)); 416 417 oneOf(targetDao).getLink(1); 418 will(returnValue(link1)); 419 420 oneOf(targetDao).getLink(2); 421 will(returnValue(link2)); 422 423 } 424 }); 425 426 427 List result = dbDispatcher.getFilteredAnnotationIDs(null, "Sagrada_Fam%C3%ADlia", "some html 1", 3, "write", null, after, before); 369 428 assertEquals(1, result.size()); 370 429 assertEquals(1, result.get(0)); 371 } 372 373 @Test 374 public void testGetFilteredAnnotationIDs2() throws NotInDataBaseException { 430 431 } 432 433 @Test 434 public void testGetFilteredAnnotationIDs3() throws NotInDataBaseException { 375 435 System.out.println("test getFilteredAnnotationIDs"); 376 436 377 final List<Number> mockTargetIDs = new ArrayList<Number>(); 378 mockTargetIDs.add(1); 379 mockTargetIDs.add(2); 380 437 381 438 final List<Number> mockAnnotationIDs1 = new ArrayList<Number>(); 382 mockAnnotationIDs1.add(1); 383 384 final List<Number> mockAnnotationIDs2 = new ArrayList<Number>(); 385 mockAnnotationIDs2.add(1); 386 mockAnnotationIDs2.add(2); 387 388 389 final List<Number> mockAnnotationIDsOwned = new ArrayList<Number>(); 390 mockAnnotationIDsOwned.add(3); 391 392 final List<Number> mockAnnotationIDsRead = new ArrayList<Number>(); 393 mockAnnotationIDsRead.add(1); 394 395 final List<Number> mockAnnotationIDsWrite = new ArrayList<Number>(); 396 mockAnnotationIDsWrite.add(2); 397 398 final List<Number> mockAnnotationIDsPublicRead = new ArrayList<Number>(); 399 mockAnnotationIDsRead.add(2); 400 401 final List<Number> mockAnnotationIDsPublicWrite = new ArrayList<Number>(); 402 mockAnnotationIDsWrite.add(1); 403 439 404 440 final String after = (new Timestamp(0)).toString(); 405 441 final String before = (new Timestamp(System.currentTimeMillis())).toString(); 406 442 407 // final List<Number> mockRetval = new ArrayList<Number>(); 408 // mockRetval.add(1); 409 410 final Number loggedIn = 3; 411 412 mockeryDao.checking(new Expectations() { 413 { 414 oneOf(targetDao).getTargetsReferringTo("nl.wikipedia.org"); 415 will(returnValue(mockTargetIDs)); 416 417 oneOf(annotationDao).getAnnotationIDsForTargets(mockTargetIDs); 418 will(returnValue(mockAnnotationIDs2)); 419 420 oneOf(annotationDao).getFilteredAnnotationIDs(null, "some html 1", null, after, before); 443 444 mockeryDao.checking(new Expectations() { 445 { 446 447 oneOf(annotationDao).getFilteredAnnotationIDs(3, "some html 1", null, after, before); 421 448 will(returnValue(mockAnnotationIDs1)); 422 449 423 oneOf(annotationDao).getAnnotationIDsForPermission(loggedIn, Access.READ); 424 will(returnValue(mockAnnotationIDsRead)); 425 426 oneOf(annotationDao).getAnnotationIDsForPublicAccess(Access.READ); 427 will(returnValue(mockAnnotationIDsPublicRead)); 428 429 oneOf(annotationDao).getAnnotationIDsForPermission(loggedIn, Access.WRITE); 430 will(returnValue(mockAnnotationIDsWrite)); 431 432 oneOf(annotationDao).getAnnotationIDsForPublicAccess(Access.WRITE); 433 will(returnValue(mockAnnotationIDsPublicWrite)); 434 435 oneOf(annotationDao).getFilteredAnnotationIDs(loggedIn, null, null, null, null); 436 will(returnValue(mockAnnotationIDsOwned)); 437 438 } 439 }); 440 441 442 List result = dbDispatcher.getFilteredAnnotationIDs(null, "nl.wikipedia.org", "some html 1", 3, "write", null, after, before); 443 assertEquals(1, result.size()); 444 assertEquals(1, result.get(0)); 445 } 446 447 @Test 448 public void testGetFilteredAnnotationIDs3() throws NotInDataBaseException { 449 System.out.println("test getFilteredAnnotationIDs"); 450 451 final List<Number> mockTargetIDs = new ArrayList<Number>(); 452 mockTargetIDs.add(1); 453 mockTargetIDs.add(2); 454 455 final List<Number> mockAnnotationIDs2 = new ArrayList<Number>(); 456 mockAnnotationIDs2.add(1); 457 mockAnnotationIDs2.add(2); 458 459 460 final String after = (new Timestamp(0)).toString(); 461 final String before = (new Timestamp(System.currentTimeMillis())).toString(); 462 463 // final List<Number> mockRetval = new ArrayList<Number>(); 464 // mockRetval.add(1); 465 466 final Number loggedIn = 3; 467 468 mockeryDao.checking(new Expectations() { 469 { 470 oneOf(targetDao).getTargetsReferringTo("nl.wikipedia.org"); 471 will(returnValue(mockTargetIDs)); 472 473 oneOf(annotationDao).getAnnotationIDsForTargets(mockTargetIDs); 474 will(returnValue(mockAnnotationIDs2)); 475 476 oneOf(annotationDao).getFilteredAnnotationIDs(loggedIn, "some html 1", null, after, before); 477 will(returnValue(new ArrayList<Number>())); 478 479 480 } 481 }); 482 483 484 List result = dbDispatcher.getFilteredAnnotationIDs(null, "nl.wikipedia.org", "some html 1", 3, "owner", null, after, before); 450 } 451 }); 452 453 454 List result = dbDispatcher.getFilteredAnnotationIDs(null, "Sagrada_Fam%C3%ADlia", "some html 1", 3, "owner", null, after, before); 485 455 assertEquals(0, result.size()); 486 456 } … … 490 460 System.out.println("test getFilteredAnnotationIDs"); 491 461 492 final List<Number> mockTargetIDs = new ArrayList<Number>(); 493 mockTargetIDs.add(1); 494 mockTargetIDs.add(2); 495 496 final List<Number> mockAnnotationIDs2 = new ArrayList<Number>(); 497 mockAnnotationIDs2.add(1); 498 mockAnnotationIDs2.add(2); 499 462 500 463 501 464 final String after = (new Timestamp(0)).toString(); … … 530 493 mockeryDao.checking(new Expectations() { 531 494 { 532 oneOf(targetDao). retrieveTargetIDs(1);495 oneOf(targetDao).getTargetIDs(1); 533 496 will(returnValue(TargetIDs)); 534 497 … … 562 525 System.out.println("test getetFilteredAnnotationInfos"); 563 526 564 final List<Number> mockTargetIDs = new ArrayList<Number>();565 mockTargetIDs.add(1);566 mockTargetIDs.add(2);567 527 568 528 final List<Number> mockAnnotationIDs1 = new ArrayList<Number>(); 569 529 mockAnnotationIDs1.add(1); 570 530 571 final List<Number> mockAnnotationIDs2 = new ArrayList<Number>(); 572 mockAnnotationIDs2.add(1); 573 mockAnnotationIDs2.add(2); 531 574 532 575 533 final UUID ownerUUID = UUID.fromString("00000000-0000-0000-0000-000000000111"); … … 584 542 final List<Number> mockAnnotationIDsRead = new ArrayList<Number>(); 585 543 mockAnnotationIDsRead.add(1); 586 587 final List<Number> mockAnnotationIDsWrite = new ArrayList<Number>(); 588 mockAnnotationIDsWrite.add(2); 589 544 mockAnnotationIDsRead.add(2); 545 590 546 final List<Number> mockAnnotationIDsPublicRead = new ArrayList<Number>(); 591 mockAnnotationIDsRead.add(2); 592 593 final List<Number> mockAnnotationIDsPublicWrite = new ArrayList<Number>(); 594 mockAnnotationIDsWrite.add(1); 547 mockAnnotationIDsPublicRead.add(1); 548 mockAnnotationIDsPublicRead.add(2); 549 550 551 552 553 final List<Number> mockTargets1 = new ArrayList<Number>(); 554 mockTargets1.add(1); 555 mockTargets1.add(2); 556 557 558 final String link1 = "http://nl.wikipedia.org/wiki/Sagrada_Fam%C3%ADlia"; 559 final String link2 = "http://nl.wikipedia.org/wiki/Antoni_Gaud%C3%AD"; 560 595 561 596 562 final AnnotationInfo mockAnnotInfo = new AnnotationInfo(); … … 611 577 will(returnValue(1)); 612 578 613 oneOf(targetDao).getTargetsReferringTo("nl.wikipedia.org"); 614 will(returnValue(mockTargetIDs)); 615 616 oneOf(annotationDao).getAnnotationIDsForTargets(mockTargetIDs); 617 will(returnValue(mockAnnotationIDs2)); 579 618 580 619 581 oneOf(annotationDao).getFilteredAnnotationIDs(1, "some html 1", null, after, before); … … 625 587 oneOf(annotationDao).getAnnotationIDsForPublicAccess(Access.READ); 626 588 will(returnValue(mockAnnotationIDsPublicRead)); 627 628 oneOf(annotationDao).getAnnotationIDsForPermission(loggedIn, Access.WRITE); 629 will(returnValue(mockAnnotationIDsWrite)); 630 631 oneOf(annotationDao).getAnnotationIDsForPublicAccess(Access.WRITE); 632 will(returnValue(mockAnnotationIDsPublicWrite)); 589 633 590 634 591 oneOf(annotationDao).getFilteredAnnotationIDs(loggedIn, null, null, null, null); 635 592 will(returnValue(mockAnnotationIDsOwned)); 636 593 594 oneOf(targetDao).getTargetIDs(1); 595 will(returnValue(mockTargets1)); 596 597 oneOf(targetDao).getLink(1); 598 will(returnValue(link1)); 599 600 oneOf(targetDao).getLink(2); 601 will(returnValue(link2)); 637 602 638 603 // /////////////////////////////////// … … 648 613 649 614 //// 650 oneOf(targetDao). retrieveTargetIDs(1);615 oneOf(targetDao).getTargetIDs(1); 651 616 will(returnValue(targetIDs)); 652 617 … … 690 655 mockeryDao.checking(new Expectations() { 691 656 { 692 oneOf(targetDao). retrieveTargetIDs(3);657 oneOf(targetDao).getTargetIDs(3); 693 658 will(returnValue(targetIDs)); 694 659 … … 1011 976 will(returnValue(2)); 1012 977 1013 oneOf(targetDao). retrieveTargetIDs(2);978 oneOf(targetDao).getTargetIDs(2); 1014 979 will(returnValue(mockTargetIDs)); 1015 980 -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDaoTest.java
r5086 r5138 255 255 } 256 256 257 @Test 258 public void testGetAnnotationIDsForTargets() { 259 System.out.println("test getAnnotationIDsForTargets"); 260 List<Number> targets = new ArrayList<Number>(); 261 targets.add(1); 262 targets.add(2); 263 List<Number> result = jdbcAnnotationDao.getAnnotationIDsForTargets(targets); 264 assertEquals(2, result.size()); 265 assertEquals(1, result.get(0)); 266 assertEquals(2, result.get(1)); 267 } 257 268 258 269 259 ////////////////////////////////// -
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/JdbcTargetDaoTest.java
r4941 r5138 191 191 } 192 192 193 /** 194 * test public List<Number> getTargetsForLink(String link) 195 * 196 * 197 */ 198 @Test 199 public void tesGetTargetsReferringTo() { 200 System.out.println(" test getTargetsReferringTo"); 201 202 String substring = "http://nl.wikipedia.org"; 203 List<Number> result = jdbcTargetDao.getTargetsReferringTo(substring); 204 assertEquals(2, result.size()); 205 assertEquals(1, result.get(0)); 206 assertEquals(2, result.get(1)); 207 } 193 208 194 209 195 @Test … … 211 197 System.out.println("retrieveTargetIDs"); 212 198 Number annotationID = 1; 213 List<Number> result = jdbcTargetDao. retrieveTargetIDs(annotationID);199 List<Number> result = jdbcTargetDao.getTargetIDs(annotationID); 214 200 assertEquals(2, result.size()); 215 201 assertEquals(1, result.get(0));
Note: See TracChangeset
for help on using the changeset viewer.