Changeset 4396


Ignore:
Timestamp:
01/29/14 16:17:56 (10 years ago)
Author:
olhsha
Message:

service for removing annotation-user pair,And updating annotation with temporary identifier which is not of <serive_uri>/<uuid> form. NOT testet!! Test both tmr.

Location:
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend
Files:
5 edited

Legend:

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

    r4264 r4396  
    226226    public int deleteAnnotationPrincipalPermissions(Number annotationID);
    227227   
     228    public int deleteAnnotationPrincipalPermission(Number annotationID, Number userID);
     229   
    228230    /*
    229231     * HELPERS
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/DBIntegrityServiceImlp.java

    r4301 r4396  
    378378    @Override
    379379    public int updateAnnotationPrincipalPermission(Number annotationID, Number userID, Permission permission) {
     380        if (permission != null) {
    380381        return annotationDao.updateAnnotationPrincipalPermission(annotationID, userID, permission);
     382        }
     383        else {
     384            return annotationDao.deleteAnnotationPrincipalPermission(annotationID, userID);
     385        }
    381386    }
    382387
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDao.java

    r4281 r4396  
    4747public class JdbcAnnotationDao extends JdbcResourceDao implements AnnotationDao {
    4848
    49     private  final Logger loggerAnnotationDao = LoggerFactory.getLogger(JdbcAnnotationDao.class);
    50    
     49    private final Logger loggerAnnotationDao = LoggerFactory.getLogger(JdbcAnnotationDao.class);
     50
    5151    public JdbcAnnotationDao(DataSource dataSource) {
    5252        setDataSource(dataSource);
     
    9797    public Permission getPermission(Number annotationID, Number userID) {
    9898        if (annotationID == null) {
    99             loggerAnnotationDao.debug("annotationID: "+nullArgument);
    100             return null;
    101         }
    102        
     99            loggerAnnotationDao.debug("annotationID: " + nullArgument);
     100            return null;
     101        }
     102
    103103        if (userID == null) {
    104             loggerAnnotationDao.debug("userID: "+nullArgument);
    105             return null;
    106         }
    107        
     104            loggerAnnotationDao.debug("userID: " + nullArgument);
     105            return null;
     106        }
     107
    108108        StringBuilder sql = new StringBuilder("SELECT ");
    109109        sql.append(permission).append(" FROM ").append(permissionsTableName).append(" WHERE ").
     
    129129    public List<Number> getAnnotationIDsForUserWithPermission(Number userID, String[] permissionStrings) {
    130130        if (permissionStrings == null) {
    131             loggerAnnotationDao.debug("premissionStrings: "+nullArgument);
    132             return null;
    133         }
    134        
    135          if (userID == null) {
    136             loggerAnnotationDao.debug("userID: "+nullArgument);
     131            loggerAnnotationDao.debug("premissionStrings: " + nullArgument);
     132            return null;
     133        }
     134
     135        if (userID == null) {
     136            loggerAnnotationDao.debug("userID: " + nullArgument);
    137137            return null;
    138138        }
     
    173173
    174174        if (annotationIDs == null) {
    175             loggerAnnotationDao.debug("annotationIDs: "+nullArgument);
     175            loggerAnnotationDao.debug("annotationIDs: " + nullArgument);
    176176            return null;
    177177        } else {
     
    184184        sql.append(" AND ").append(annotation_id).append(" IN ").append(values);
    185185
    186  
     186
    187187        if (after != null) {
    188188            sql.append(" AND ").append(last_modified).append("  > :after");
     
    201201        return getSimpleJdbcTemplate().query(sql.toString(), internalIDRowMapper, params);
    202202    }
    203    
     203
    204204    /////////////////////////////////////////
    205    
    206     @Override
    207     public List<Number> getAllAnnotationIDs(){
     205    @Override
     206    public List<Number> getAllAnnotationIDs() {
    208207        StringBuilder sql = new StringBuilder("SELECT ");
    209208        sql.append(annotation_id).append(" , ").append(last_modified).append(" FROM ").append(annotationTableName).append(" ORDER BY ").append(last_modified).append(" DESC");
    210         return getSimpleJdbcTemplate().query(sql.toString(), internalIDRowMapper);       
     209        return getSimpleJdbcTemplate().query(sql.toString(), internalIDRowMapper);
    211210    }
    212211
     
    215214    public List<Number> retrieveAnnotationList(List<Number> targetIDs) {
    216215        if (targetIDs == null) {
    217            loggerAnnotationDao.debug("targetIDs: "+nullArgument);
     216            loggerAnnotationDao.debug("targetIDs: " + nullArgument);
    218217            return null;
    219218        }
     
    231230    public AnnotationInfo getAnnotationInfoWithoutTargets(Number annotationID) {
    232231        if (annotationID == null) {
    233             loggerAnnotationDao.debug("annotationID: "+nullArgument);
     232            loggerAnnotationDao.debug("annotationID: " + nullArgument);
    234233            return null;
    235234        }
     
    269268    public List<String> getAnnotationREFs(List<Number> annotationIDs) {
    270269        if (annotationIDs == null) {
    271            loggerAnnotationDao.debug("annotationIDs: "+nullArgument);
     270            loggerAnnotationDao.debug("annotationIDs: " + nullArgument);
    272271            return null;
    273272        }
     
    292291    public Annotation getAnnotationWithoutTargetsAndPermissions(Number annotationID) {
    293292        if (annotationID == null) {
    294             loggerAnnotationDao.debug("annotationID: "+nullArgument);
     293            loggerAnnotationDao.debug("annotationID: " + nullArgument);
    295294            return null;
    296295        }
     
    327326        }
    328327    };
    329    
    330     @Override
    331     public Number  getOwner(Number annotationID){
    332         if (annotationID == null) {
    333             loggerAnnotationDao.debug("annotationID: "+nullArgument);
     328
     329    @Override
     330    public Number getOwner(Number annotationID) {
     331        if (annotationID == null) {
     332            loggerAnnotationDao.debug("annotationID: " + nullArgument);
    334333            return null;
    335334        }
     
    341340        return (respond.isEmpty() ? null : respond.get(0));
    342341    }
    343        
     342
    344343    /////////////////////////////
    345344    @Override
     
    415414
    416415        if (annotationID == null) {
    417             loggerAnnotationDao.debug("annotationID: "+nullArgument);
    418             return 0;
    419         }
    420        
     416            loggerAnnotationDao.debug("annotationID: " + nullArgument);
     417            return 0;
     418        }
     419
    421420        if (userID == null) {
    422             loggerAnnotationDao.debug("userID: "+nullArgument);
    423             return 0;
    424         }
    425        
    426          if (permission == null) {
    427             loggerAnnotationDao.debug("permission: "+nullArgument);
    428             return 0;
    429         }
    430        
     421            loggerAnnotationDao.debug("userID: " + nullArgument);
     422            return 0;
     423        }
     424
     425        if (permission == null) {
     426            loggerAnnotationDao.debug("permission: " + nullArgument);
     427            return 0;
     428        }
     429
    431430        Map<String, Object> params = new HashMap<String, Object>();
    432431
     
    443442            return getSimpleJdbcTemplate().update(sql.toString(), params);
    444443        } else {
    445            StringBuilder sql = new StringBuilder("DELETE FROM ");
    446            sql.append(permissionsTableName).append(" WHERE ").append(annotation_id).append("= :annotationID").
     444            StringBuilder sql = new StringBuilder("DELETE FROM ");
     445            sql.append(permissionsTableName).append(" WHERE ").append(annotation_id).append("= :annotationID").
    447446                    append(" AND ").append(principal_id).append("= :principalID");
    448            return (getSimpleJdbcTemplate().update(sql.toString(), params));
     447            return (getSimpleJdbcTemplate().update(sql.toString(), params));
    449448        }
    450449
     
    456455
    457456        String[] body = retrieveBodyComponents(annotation.getBody());
    458        
     457
    459458        if (annotation == null) {
    460             loggerAnnotationDao.debug("annotation: "+nullArgument);
     459            loggerAnnotationDao.debug("annotation: " + nullArgument);
    461460            return 0;
    462461        }
     
    482481    @Override
    483482    public int addAnnotationTarget(Number annotationID, Number targetID) {
    484        
    485         if (annotationID == null) {
    486             loggerAnnotationDao.debug("annotationID: "+nullArgument);
    487             return 0;
    488         }
    489        
     483
     484        if (annotationID == null) {
     485            loggerAnnotationDao.debug("annotationID: " + nullArgument);
     486            return 0;
     487        }
     488
    490489        if (targetID == null) {
    491             loggerAnnotationDao.debug("targetID: "+nullArgument);
    492             return 0;
    493         }
    494        
     490            loggerAnnotationDao.debug("targetID: " + nullArgument);
     491            return 0;
     492        }
     493
    495494        Map<String, Object> paramsAnnotationsTargets = new HashMap<String, Object>();
    496495        paramsAnnotationsTargets.put("annotationId", annotationID);
     
    504503    @Override
    505504    public int addAnnotationPrincipalPermission(Number annotationID, Number userID, Permission permission) {
    506        
    507          if (annotationID == null) {
    508             loggerAnnotationDao.debug("annotationID: "+nullArgument);
    509             return 0;
    510         }
    511        
     505
     506        if (annotationID == null) {
     507            loggerAnnotationDao.debug("annotationID: " + nullArgument);
     508            return 0;
     509        }
     510
    512511        if (userID == null) {
    513             loggerAnnotationDao.debug("userID: "+nullArgument);
    514             return 0;
    515         }
    516        
    517          if (permission == null) {
    518             loggerAnnotationDao.debug("permission: "+nullArgument);
    519             return 0;
    520         }
    521                
    522        
     512            loggerAnnotationDao.debug("userID: " + nullArgument);
     513            return 0;
     514        }
     515
     516        if (permission == null) {
     517            loggerAnnotationDao.debug("permission: " + nullArgument);
     518            return 0;
     519        }
     520
     521
    523522        Map<String, Object> paramsPermissions = new HashMap<String, Object>();
    524523        paramsPermissions.put("annotationId", annotationID);
     
    543542            return (getSimpleJdbcTemplate().update(sqlAnnotation.toString(), annotationID));
    544543        } else {
    545             loggerAnnotationDao.debug("annotationID: "+nullArgument);
     544            loggerAnnotationDao.debug("annotationID: " + nullArgument);
    546545            return 0;
    547546        }
     
    555554            return getSimpleJdbcTemplate().update(sqlTargetTargets.toString(), annotationID); // # removed "annotations_target_Targets" rows
    556555        } else {
    557             loggerAnnotationDao.debug("annotationID: "+nullArgument);
     556            loggerAnnotationDao.debug("annotationID: " + nullArgument);
    558557            return 0;
    559558        }
     
    568567            return getSimpleJdbcTemplate().update(sqlPermissions.toString(), annotationID); // removed "permission" rows
    569568        } else {
    570             loggerAnnotationDao.debug("annotationID: "+nullArgument);
     569            loggerAnnotationDao.debug("annotationID: " + nullArgument);
     570            return 0;
     571        }
     572
     573    }
     574
     575    //////////////////////////////////////////////////////
     576    @Override
     577    public int deleteAnnotationPrincipalPermission(Number annotationID, Number userID) {
     578        if (annotationID != null) {
     579            if (userID != null) {
     580                Map<String, Number> params = new HashMap();
     581                params.put("annotationId", annotationID);
     582                params.put("userId", userID);
     583                StringBuilder sqlPermissions = new StringBuilder("DELETE FROM ");
     584                sqlPermissions.append(permissionsTableName).append(" WHERE ").append(annotation_id).append(" = :annotationId AND ").
     585                append(principal_id).append(" = :userId");               
     586                return getSimpleJdbcTemplate().update(sqlPermissions.toString(), params); 
     587            } else {
     588                loggerAnnotationDao.debug("userID: " + nullArgument);
     589                return 0;
     590            }
     591        } else {
     592            loggerAnnotationDao.debug("annotationID: " + nullArgument);
    571593            return 0;
    572594        }
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcResourceDao.java

    r4281 r4396  
    141141        String externalID = stringURItoExternalID(uri);
    142142        try {
    143             return getInternalID(UUID.fromString(externalID));
     143            UUID externalUUID = UUID.fromString(externalID);
     144            return getInternalID(externalUUID);
    144145        } catch (IllegalArgumentException e) {
    145             _logger.debug("Got a non valid external ID (not an UUID) " + externalID + " from uri " + uri);
     146            _logger.debug(externalID + " is not a valid <uuid>.  Therefore, I expect that it is a temporary idendifier of a new resource that is not yet in the database and return null.");
    146147            return null;
    147148        }
     
    237238    @Override
    238239    public String stringURItoExternalID(String stringURI) {
    239         return stringURI.substring(_serviceURI.length());
     240        if (stringURI.length() > _serviceURI.length()) {
     241            return stringURI.substring(_serviceURI.length());
     242        } else {
     243            logger.debug(stringURI + " does not have the form <service url>/<isentifier>, therefore I return the input value.");
     244            return stringURI;
     245        }
    240246    }
    241247
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/rest/AnnotationResource.java

    r4301 r4396  
    512512        }
    513513    }
     514   
     515    @DELETE
     516    @Produces(MediaType.TEXT_PLAIN)
     517    @Path("{annotationId: " + BackendConstants.regExpIdentifier + "}/user/{userId}/delete")
     518    public String deleteUsersPermission(@PathParam("annotationId") String annotationId, @PathParam("userId") String userId) throws IOException {
     519        dbIntegrityService.setServiceURI(uriInfo.getBaseUri().toString());
     520        int deletedRows = 0;
     521        try {
     522            final Number annotationID = dbIntegrityService.getAnnotationInternalIdentifier(UUID.fromString(annotationId));
     523            String remoteUser = httpServletRequest.getRemoteUser();
     524            Number remoteUserID = dbIntegrityService.getUserInternalIDFromRemoteID(remoteUser);
     525            if (remoteUserID != null) {
     526                if (annotationID != null) {
     527                    if (isOwner(remoteUserID, annotationID)) {
     528                        Number userID = dbIntegrityService.getUserInternalIdentifier(UUID.fromString(userId));
     529                        if (userID != null) {
     530                            deletedRows = dbIntegrityService.updateAnnotationPrincipalPermission(annotationID, userID, null);
     531
     532                        } else {
     533                            loggerServer.debug(httpServletResponse.SC_NOT_FOUND + ": the user external identifier " + userId + " is not found the the databse.");
     534                            httpServletResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The user external identifier " + userId + " is not found the the databse.");
     535
     536                        }
     537                    } else {
     538                        loggerServer.debug(httpServletResponse.SC_UNAUTHORIZED + "The logged-in user cannot change the access rights on this annotation because (s)he is  not its owner.");
     539                        httpServletResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The logged-in user cannot change the access rights on this annotation because (s)he is  not its owner.");
     540
     541                    }
     542                } else {
     543                    loggerServer.debug(HttpServletResponse.SC_NOT_FOUND + ": The annotation with the given id " + annotationId + " is not found in the database");
     544                    httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND, "The annotation with the given id  " + annotationId + "  is not found in the database.");
     545
     546                }
     547            } else {
     548                loggerServer.debug(httpServletResponse.SC_NOT_FOUND + ": the logged-in user is not found in the database");
     549                httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND, "The logged-in user is not found in the database.");
     550
     551            }
     552        } catch (IllegalArgumentException e) {
     553            loggerServer.debug(HttpServletResponse.SC_BAD_REQUEST + ": Illegal argument UUID " + annotationId);
     554            httpServletResponse.sendError(HttpServletResponse.SC_BAD_REQUEST, "Illegal argument UUID " + annotationId);
     555
     556        }
     557        return (deletedRows + " is deleted.");
     558    }
    514559/////////////////////////////////////////
    515560
Note: See TracChangeset for help on using the changeset viewer.