Changeset 5468 for DASISH


Ignore:
Timestamp:
07/09/14 15:17:21 (10 years ago)
Author:
olhsha@mpi.nl
Message:

adding three API's: update cached's blob via sending the path/url to its file, updating a resource's external UUID (only for the admin), generating random uuid.

Location:
DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src
Files:
13 edited

Legend:

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

    r5385 r5468  
    214214     * UPDATERS
    215215     */
     216   
     217    boolean updateResourceIdentifier(Resource resource, UUID oldIdentifier, UUID newIdentifier) throws NotInDataBaseException;
     218   
     219   
    216220    boolean updateAccount(UUID principalExternalID, String account) throws NotInDataBaseException;
    217221
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/ResourceDao.java

    r5385 r5468  
    3636    UUID getExternalID(Number internalId);
    3737
    38  
     38    boolean updateResourceIdentifier(UUID oldIdentifier, UUID newIdentifier);
    3939 
    4040    /**
     
    5151
    5252    Access getPublicAttribute(Number resourceID);
     53   
     54   
    5355}
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/DBDispatcherImlp.java

    r5385 r5468  
    615615    ///// UPDATERS /////////////////
    616616    @Override
     617    public boolean updateResourceIdentifier(Resource resource, UUID oldIdentifier, UUID newIdentifier) {
     618        switch (resource) {
     619            case PRINCIPAL:
     620                return principalDao.updateResourceIdentifier(oldIdentifier, newIdentifier);
     621            case ANNOTATION:
     622                return annotationDao.updateResourceIdentifier(oldIdentifier, newIdentifier);
     623            case TARGET:
     624                return targetDao.updateResourceIdentifier(oldIdentifier, newIdentifier);
     625            case CACHED_REPRESENTATION:
     626                return cachedRepresentationDao.updateResourceIdentifier(oldIdentifier, newIdentifier);
     627            case NOTEBOOK:
     628                return notebookDao.updateResourceIdentifier(oldIdentifier, newIdentifier);
     629            default:
     630                return false;
     631        }
     632    }
     633   
     634    @Override
    617635    public boolean updateAccount(UUID principalExternalID, String account) throws NotInDataBaseException {
    618636        return principalDao.updateAccount(principalExternalID, account);
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcResourceDao.java

    r5385 r5468  
    2020import eu.dasish.annotation.backend.Helpers;
    2121import eu.dasish.annotation.backend.NotInDataBaseException;
     22import eu.dasish.annotation.backend.Resource;
    2223import eu.dasish.annotation.backend.dao.ResourceDao;
    2324import eu.dasish.annotation.schema.Access;
     
    217218        }
    218219    };
     220   
     221    ///// UPDATERS ////
     222   
     223    @Override
     224    public boolean updateResourceIdentifier(UUID oldIdentifier, UUID newIdentifier) {
     225        Map<String, Object> params = new HashMap<String, Object>();
     226        params.put("oldId", oldIdentifier.toString());
     227        params.put("newId", newIdentifier.toString());
     228        StringBuilder sql = new StringBuilder("UPDATE ");
     229        sql.append(resourceTableName).append(" SET ").
     230                append(external_id).append("=  :newId").               
     231                append(" WHERE ").append(external_id).append("= :oldId");
     232        int affectedRows = this.loggedUpdate(sql.toString(), params);
     233        return (affectedRows >0);
     234    }
     235   
     236   
    219237////////////////// ROW MAPPERS ///////////////////
    220238    protected final RowMapper<Number> internalIDRowMapper = new RowMapper<Number>() {
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/rest/CachedRepresentationResource.java

    r5385 r5468  
    2828import eu.dasish.annotation.schema.ObjectFactory;
    2929import java.awt.image.BufferedImage;
     30import java.io.FileInputStream;
    3031import java.io.IOException;
    3132import java.io.InputStream;
     33import java.net.URL;
    3234import java.sql.SQLException;
    3335import java.util.HashMap;
     
    109111
    110112    @GET
    111     @Produces({"text/plain", "text/html", "text/xml", "application/zip"})
     113    //@Produces({"text/plain", "text/html", "text/xml", "application/zip", "image/png", "image/jpg"})
    112114    @Path("{cachedid: " + BackendConstants.regExpIdentifier + "}/stream")
    113115    @Transactional(readOnly = true)
     
    142144            return "Nothing is updated. ";
    143145        }
    144        
    145        
     146
     147
     148    }
     149
     150    @PUT
     151    @Consumes("text/plain")
     152    @Produces(MediaType.APPLICATION_XML)
     153    @Path("{cachedid: " + BackendConstants.regExpIdentifier + "}/path/{isurl}")
     154    public String updateCachedBlobFromFile(@PathParam("cachedid") String cachedIdentifier,
     155            @PathParam("isurl") String isURL, String blobPath) throws IOException {
     156        Map params = new HashMap();
     157        InputStream input;
     158
     159        if (isURL.equals("URL")) {
     160            URL blob = new URL(blobPath);
     161            input = blob.openStream();
     162        } else {
     163            input = new FileInputStream (blobPath);
     164        }
     165
     166        params.put("stream", input);
     167        Integer result = (Integer) (new RequestWrappers(this)).wrapRequestResource(params, new UpdateCachedBlob(), Resource.CACHED_REPRESENTATION, ResourceAction.WRITE, cachedIdentifier);
     168        input.close();
     169        if (result != null) {
     170            return result + "rows are updated";
     171        } else {
     172            return "Nothing is updated. ";
     173        }
     174
     175
    146176    }
    147177
    148178    private class UpdateCachedBlob implements ILambda<Map, Integer> {
     179
    149180        @Override
    150181        public Integer apply(Map params) throws NotInDataBaseException {
     
    174205            return "Nothing is updated. ";
    175206        }
    176        
    177     }
    178    
    179      private class UpdateCachedMetadata implements ILambda<Map, Integer> {
     207
     208    }
     209
     210    private class UpdateCachedMetadata implements ILambda<Map, Integer> {
     211
    180212        @Override
    181213        public Integer apply(Map params) throws NotInDataBaseException {
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/rest/DebugResource.java

    r5088 r5468  
    1818package eu.dasish.annotation.backend.rest;
    1919
     20import eu.dasish.annotation.backend.BackendConstants;
     21import eu.dasish.annotation.backend.Helpers;
    2022import eu.dasish.annotation.backend.NotInDataBaseException;
     23import eu.dasish.annotation.backend.Resource;
    2124import eu.dasish.annotation.schema.AnnotationInfoList;
    2225import eu.dasish.annotation.schema.ObjectFactory;
     
    4750
    4851    private final String developer = "developer";
     52   
     53   
     54    @GET
     55    @Produces(MediaType.TEXT_PLAIN)
     56    @Path("uuid")
     57    public String generateUUID() throws IOException {
     58       return (Helpers.generateUUID()).toString();
     59    }
    4960
    5061    @GET
     
    118129    @PUT
    119130    @Produces(MediaType.TEXT_XML)
    120     @Path("account/{principalId}/make/{account}")
     131    @Path("/account/{principalId}/make/{account}")
    121132    @Transactional(readOnly = true)
    122133    public String updatePrincipalsAccount(@PathParam("principalId") String principalId, @PathParam("account") String account) throws IOException {
     
    138149            httpServletResponse.sendError(HttpServletResponse.SC_FORBIDDEN);
    139150            return "Coucou.";
     151        }
     152
     153    }
     154   
     155    //////////////////////////////////
     156    @PUT
     157    @Produces(MediaType.TEXT_XML)
     158    @Path("/resource/{resource}/{oldId: " + BackendConstants.regExpIdentifier + "}/newid/{newId:" + BackendConstants.regExpIdentifier + "}")
     159    public String updateResourceIdentifier(@PathParam("resource") String resource, @PathParam("oldId") String oldExternalId, @PathParam("newId") String newExternalId) throws IOException {
     160        Number remotePrincipalID = this.getPrincipalID();
     161        if (remotePrincipalID == null) {
     162            return "null in;ogged principal";
     163        }
     164        String typeOfAccount = dbDispatcher.getTypeOfPrincipalAccount(remotePrincipalID);
     165        if (typeOfAccount.equals(admin)) {
     166            try {
     167                final boolean update = dbDispatcher.updateResourceIdentifier(Resource.valueOf(resource), UUID.fromString(oldExternalId), UUID.fromString(newExternalId));
     168                return (update ? "The identifier is updated" : "The account is not updated, see the log.");
     169            } catch (NotInDataBaseException e) {
     170                httpServletResponse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
     171                return e.toString();
     172            }
     173        } else {
     174            this.ADMIN_RIGHTS_EXPECTED();
     175            httpServletResponse.sendError(HttpServletResponse.SC_FORBIDDEN);
     176            return "Dooooeeeii!!";
    140177        }
    141178
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/rest/ResourceResource.java

    r5385 r5468  
    9292        }
    9393    }
     94   
     95   
    9496
    9597    protected void ADMIN_RIGHTS_EXPECTED() throws IOException {
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/webapp/index.jsp

    r5401 r5468  
    7272        <b>Debugging URI's (only for developers)</b><br>
    7373        GET <a href="api/debug/remoteID">api/debug/remoteID</a> <br>
     74        GET <a href="api/debug/uuid">api/debug/uuid</a> (random uuid) <br>
    7475        GET <a href="api/debug/annotations">api/debug/annotations</a> <br>
    75         updated: GET <a href="api/debug/logDatabase/32">api/debug/logDatabase/32</a> <br>
    76         updated: GET <a href="api/debug/logServer/32">api/debug/logServer/32</a> <br>
     76        GET <a href="api/debug/logDatabase/32">api/debug/logDatabase/32</a> <br>
     77        GET <a href="api/debug/logServer/32">api/debug/logServer/32</a> <br>
    7778    </body>
    7879</html>
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDaoTest.java

    r5393 r5468  
    462462        assertEquals(Access.NONE, jdbcAnnotationDao.getPublicAttribute(1));
    463463    }
     464   
     465    @Test
     466    public void testUpdateIdentifier() throws NotInDataBaseException{
     467        System.out.println("test updateResourceIdentifier ");
     468
     469        boolean result = jdbcAnnotationDao.updateResourceIdentifier(UUID.fromString("00000000-0000-0000-0000-000000000021"), UUID.fromString("10000000-0000-0000-0000-000000000021"));
     470        assertEquals(true, result);
     471        Number id = jdbcAnnotationDao.getInternalID(UUID.fromString("10000000-0000-0000-0000-000000000021"));
     472        assertEquals(1, id);
     473    }
    464474
    465475    @Test
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/JdbcCachedRepresentationDaoTest.java

    r5393 r5468  
    218218    }
    219219
     220   
     221    @Test
     222    public void testUpdateIdentifier() throws NotInDataBaseException{
     223        System.out.println("test updateResourceIdentifier ");
     224
     225        boolean result = jdbcCachedRepresentationDao.updateResourceIdentifier(UUID.fromString("00000000-0000-0000-0000-000000000051"), UUID.fromString("a0000000-0000-0000-0000-000000000051"));
     226        assertEquals(true, result);
     227        Number id = jdbcCachedRepresentationDao.getInternalID(UUID.fromString("a0000000-0000-0000-0000-000000000051"));
     228        assertEquals(1, id);
     229    }
    220230   
    221231}
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/JdbcNotebookDaoTest.java

    r5385 r5468  
    2424import java.util.ArrayList;
    2525import java.util.List;
     26import java.util.UUID;
    2627import javax.xml.datatype.DatatypeConfigurationException;
    2728import javax.xml.datatype.DatatypeFactory;
     
    233234        assertFalse(jdbcNotebookDao.deleteNotebook(3));
    234235    }
     236   
     237    @Test
     238    public void testUpdateIdentifier() throws NotInDataBaseException{
     239        System.out.println("test updateResourceIdentifier ");
     240
     241        boolean result = jdbcNotebookDao.updateResourceIdentifier(UUID.fromString("00000000-0000-0000-0000-000000000011"), UUID.fromString("a0000000-0000-0000-0000-000000000011"));
     242        assertEquals(true, result);
     243        Number id = jdbcNotebookDao.getInternalID(UUID.fromString("a0000000-0000-0000-0000-000000000011"));
     244        assertEquals(1, id);
     245    }
    235246}
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/JdbcPrincipalDaoTest.java

    r5393 r5468  
    168168        assertEquals(expResult, result);
    169169    }
     170   
     171    @Test
     172    public void testUpdateIdentifier() throws NotInDataBaseException{
     173        System.out.println("test updateResourceIdentifier ");
     174
     175        boolean result = jdbcPrincipalDao.updateResourceIdentifier(UUID.fromString("00000000-0000-0000-0000-000000000111"), UUID.fromString("a0000000-0000-0000-0000-000000000111"));
     176        assertEquals(true, result);
     177        Number id = jdbcPrincipalDao.getInternalID(UUID.fromString("a0000000-0000-0000-0000-000000000111"));
     178        assertEquals(1, id);
     179    }
     180   
    170181//   
    171182//   @Test
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/JdbcTargetDaoTest.java

    r5393 r5468  
    207207        assertEquals(1, result);
    208208    }
     209   
     210    @Test
     211    public void testUpdateIdentifier() throws NotInDataBaseException{
     212        System.out.println("test updateResourceIdentifier ");
     213
     214        boolean result = jdbcTargetDao.updateResourceIdentifier(UUID.fromString("00000000-0000-0000-0000-000000000031"), UUID.fromString("a0000000-0000-0000-0000-000000000031"));
     215        assertEquals(true, result);
     216        Number id = jdbcTargetDao.getInternalID(UUID.fromString("a0000000-0000-0000-0000-000000000031"));
     217        assertEquals(1, id);
     218    }
    209219}
Note: See TracChangeset for help on using the changeset viewer.