Changeset 5186


Ignore:
Timestamp:
05/12/14 14:37:00 (10 years ago)
Author:
olhsha@mpi.nl
Message:

Fixing small bugs + optimisation for update and post principals and annotations and their parts

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

Legend:

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

    r5088 r5186  
    257257    int updatePublicAttribute(Number annotationID, Access publicAttribute);
    258258   
    259     int updatePrincipal(Principal principal) throws NotInDataBaseException;
     259    Number updatePrincipal(Principal principal) throws NotInDataBaseException;
    260260
    261261   
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/PrincipalDao.java

    r4995 r5186  
    5555     public boolean updateAccount(UUID externalID, String account) throws NotInDataBaseException;
    5656     
    57      public int updatePrincipal(Principal principal) throws NotInDataBaseException;
     57     public Number updatePrincipal(Principal principal) throws NotInDataBaseException;
    5858   
    5959     public Number addPrincipal(Principal principal, String remoteID) throws NotInDataBaseException;
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/DBDispatcherImlp.java

    r5139 r5186  
    414414        Access publicAttribute = annotationDao.getPublicAttribute(annotationID);
    415415        Access access = annotationDao.getAccess(annotationID, principalID);
    416         if (publicAttribute.equals(Access.NONE)) {
    417             return access;
     416        if (access != null) {
     417            if (publicAttribute.equals(Access.NONE)) {
     418                return access;
     419            } else {
     420                if (publicAttribute.equals(Access.READ)) {
     421                    if (access.equals(Access.NONE)) {
     422                        return Access.READ;
     423                    } else {
     424                        return access;
     425                    }
     426                } else {
     427                    return Access.WRITE;
     428                }
     429            }
    418430        } else {
    419             if (publicAttribute.equals(Access.READ)) {
    420                 if (access.equals(Access.NONE)) {
    421                     return Access.READ;
    422                 } else {
    423                     return access;
    424                 }
    425             } else {
    426                 return Access.WRITE;
    427             }
     431            return publicAttribute;
    428432        }
    429433    }
     
    602606    public int updateAnnotationPrincipalAccess(Number annotationID, Number principalID, Access access) {
    603607        int result;
    604         Access currentAccess = annotationDao.getAccess(annotationID, principalID);
    605         if (currentAccess != Access.NONE) {
    606             result = annotationDao.updateAnnotationPrincipalAccess(annotationID, principalID, access);
     608        if (access != null) {
     609            Access currentAccess = annotationDao.getAccess(annotationID, principalID);
     610            if (currentAccess != null) {
     611                result = annotationDao.updateAnnotationPrincipalAccess(annotationID, principalID, access);
     612            } else {
     613                result = annotationDao.addAnnotationPrincipalAccess(annotationID, principalID, access);
     614            }
    607615        } else {
    608             if (!access.equals(Access.NONE)) {
    609                 result = annotationDao.deleteAnnotationPrincipalAccess(annotationID, principalID);
    610                 result = annotationDao.addAnnotationPrincipalAccess(annotationID, principalID, access);
    611             } else {
    612                 result = 0;
    613             }
     616            result = annotationDao.deleteAnnotationPrincipalAccess(annotationID, principalID);
    614617        }
    615618        return result;
     
    630633            Access access = permission.getLevel();
    631634            Access currentAccess = annotationDao.getAccess(annotationID, principalID);
    632             if (!access.equals(currentAccess)) {
    633                 // then we need to update or psossibly add for none
    634                 if (!currentAccess.equals(Access.NONE)) {
     635            if (currentAccess != null) {
     636                if (!access.equals(currentAccess)) {
    635637                    result = result + annotationDao.updateAnnotationPrincipalAccess(annotationID, principalID, access);
    636638                } else {
    637                     annotationDao.deleteAnnotationPrincipalAccess(annotationID, principalID);
    638                     result = result + annotationDao.addAnnotationPrincipalAccess(annotationID, principalID, access);
     639                    result = 0;
    639640                }
    640             }
     641            } else {
     642                result = result + annotationDao.addAnnotationPrincipalAccess(annotationID, principalID, access);
     643            }
     644
    641645        }
    642646        return result;
     
    644648// TODO: optimize (not chnanged targets should not be deleted)
    645649// TODO: unit test
    646 
    647650    @Override
    648651    public int updateAnnotation(Annotation annotation) throws NotInDataBaseException {
     
    670673
    671674    @Override
    672     public int updatePrincipal(Principal principal) throws NotInDataBaseException {
     675    public Number updatePrincipal(Principal principal) throws NotInDataBaseException {
    673676        return principalDao.updatePrincipal(principal);
    674677    }
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDao.java

    r5138 r5186  
    8888        List<Access> result = this.loggedQuery(sql.toString(), accessRowMapper, params);
    8989        if (result.isEmpty()) {
    90             return Access.NONE;
     90            return null;
    9191        } else {
    9292            return result.get(0);
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcPrincipalDao.java

    r5086 r5186  
    243243
    244244    @Override
    245     public int updatePrincipal(Principal principal) throws NotInDataBaseException {
     245    public Number updatePrincipal(Principal principal) throws NotInDataBaseException {
    246246        Number principalID = this.getInternalIDFromURI(principal.getURI());
    247247        StringBuilder sql = new StringBuilder("UPDATE ");
     
    250250                append(principal_name).append("= '").append(principal.getDisplayName()).append("' ").
    251251                append(" WHERE ").append(principal_id).append("= ?");
    252         return this.loggedUpdate(sql.toString(), principalID);
     252        int updatedRows = this.loggedUpdate(sql.toString(), principalID);
     253        return principalID;
    253254
    254255    }
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/rest/CachedRepresentationResource.java

    r5088 r5186  
    180180        @Override
    181181        public Integer apply(Map params) throws NotInDataBaseException {
    182             CachedRepresentationInfo cachedInfo = (CachedRepresentationInfo) params.get("cachedInfo");
     182            CachedRepresentationInfo cachedInfo = (CachedRepresentationInfo) params.get("info");
    183183            return dbDispatcher.updateCachedMetada(cachedInfo);
    184184        }
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/rest/PrincipalResource.java

    r5138 r5186  
    293293        if (dbDispatcher.getTypeOfPrincipalAccount(remotePrincipalID).equals(admin)) {
    294294            Map params = new HashMap<String, Object>();
    295             params.put("principal", principal);
     295            params.put("newPrincipal", principal);
    296296            Principal result = (Principal) (new RequestWrappers(this)).wrapRequestResource(params, new UpdatePrincipal());
    297297            return (result != null) ? (new ObjectFactory().createPrincipal(result)) : (new ObjectFactory().createPrincipal(new Principal()));
     
    326326        public Principal apply(Map params) throws NotInDataBaseException {
    327327            Principal principal = (Principal) params.get("newPrincipal");
    328             Number principalID = (Number) params.get("principalID");
    329             String uri = dbDispatcher.getResourceURI(principalID, Resource.PRINCIPAL);
    330             principal.setURI(uri);
    331             Number principalIDupd = dbDispatcher.updatePrincipal(principal);
    332             return dbDispatcher.getPrincipal(principalID);
     328            Number principalIDupd = dbDispatcher.updatePrincipal(principal);           
     329            return dbDispatcher.getPrincipal(principalIDupd);
    333330        }
    334331    }
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/DBDispatcherTest.java

    r5138 r5186  
    17761776
    17771777                oneOf(annotationDao).getAccess(1, 4);
    1778                 will(returnValue(Access.NONE));
    1779 
    1780                 oneOf(annotationDao).deleteAnnotationPrincipalAccess(1, 4);
    1781                 will(returnValue(0));
    1782 
     1778                will(returnValue(null));
     1779               
    17831780                oneOf(annotationDao).addAnnotationPrincipalAccess(1, 4, Access.WRITE);
    17841781                will(returnValue(1));
     
    17951792        System.out.println("test updatePermissions");
    17961793
    1797         final Annotation annotation = (new TestInstances(TestBackendConstants._TEST_SERVLET_URI)).getAnnotationOne();
    1798         final PermissionList permissions = annotation.getPermissions();
    1799 
     1794        final PermissionList permissions = new PermissionList();
     1795       
     1796        Permission permission2 = new Permission();
     1797        permission2.setPrincipalRef("ref2");
     1798        permission2.setLevel(Access.WRITE);
     1799
     1800        Permission permission3 = new Permission();
     1801        permission3.setPrincipalRef("ref3");
     1802        permission3.setLevel(Access.READ);
     1803             
     1804        Permission permission4 = new Permission();
     1805        permission4.setLevel(Access.READ);
     1806        permission4.setPrincipalRef("ref4");
     1807       
     1808        permissions.getPermission().add(permission2);
     1809        permissions.getPermission().add(permission3);
     1810        permissions.getPermission().add(permission4);       
     1811        permissions.setPublic(Access.WRITE);
    18001812
    18011813        mockeryDao.checking(new Expectations() {
     
    18161828                oneOf(annotationDao).getAccess(1, 3);
    18171829                will(returnValue(Access.WRITE));
     1830               
     1831                oneOf(principalDao).getInternalIDFromURI(permissions.getPermission().get(2).getPrincipalRef());
     1832                will(returnValue(4));
     1833
     1834                oneOf(annotationDao).getAccess(1, 4);
     1835                will(returnValue(null));
    18181836
    18191837                oneOf(annotationDao).updateAnnotationPrincipalAccess(1, 3, Access.READ);
    18201838                will(returnValue(1));
    1821 
    1822             }
    1823         });
    1824 
    1825         assertEquals(1, dbDispatcher.updatePermissions(1, permissions));
    1826 
    1827     }
    1828 
    1829     @Test
    1830     public void testUpdatePermissions2() throws NotInDataBaseException {
    1831         System.out.println("test updatePermissions 2");
    1832 
    1833         final PermissionList permissions = new PermissionList();
    1834         permissions.setPublic(Access.READ);
    1835         Permission permission = new Permission();
    1836         permissions.getPermission().add(permission);
    1837         permission.setLevel(Access.WRITE);
    1838         permission.setPrincipalRef(TestBackendConstants._TEST_SERVLET_URI_principals + "00000000-0000-0000-0000-000000000220");
    1839 
    1840         mockeryDao.checking(new Expectations() {
    1841             {
    1842                 /////
    1843                 oneOf(annotationDao).updatePublicAttribute(1, permissions.getPublic());
    1844                 will(returnValue(1));
    1845 
    1846                 oneOf(principalDao).getInternalIDFromURI(permissions.getPermission().get(0).getPrincipalRef());
    1847                 will(returnValue(10));
    1848 
    1849                 oneOf(annotationDao).getAccess(1, 10);
    1850                 will(returnValue(Access.NONE));
    1851 
    1852                 oneOf(annotationDao).deleteAnnotationPrincipalAccess(1, 10);
    1853                 will(returnValue(0));
    1854 
    1855                 oneOf(annotationDao).addAnnotationPrincipalAccess(1, 10, permissions.getPermission().get(0).getLevel());
    1856                 will(returnValue(1));
    1857 
    1858             }
    1859         });
    1860 
    1861         assertEquals(1, dbDispatcher.updatePermissions(1, permissions));
    1862 
    1863     }
     1839               
     1840                oneOf(annotationDao).addAnnotationPrincipalAccess(1, 4, Access.READ);
     1841                will(returnValue(1));
     1842
     1843            }
     1844        });
     1845
     1846        assertEquals(2, dbDispatcher.updatePermissions(1, permissions));
     1847
     1848    }
     1849
     1850   
    18641851
    18651852    @Test
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDaoTest.java

    r5174 r5186  
    364364        assertEquals(Access.READ, jdbcAnnotationDao.getAccess(1, 3));
    365365        assertEquals(Access.WRITE, jdbcAnnotationDao.getAccess(2, 3));
    366         assertEquals(Access.NONE, jdbcAnnotationDao.getAccess(3, 3));
     366        assertEquals(null, jdbcAnnotationDao.getAccess(3, 3));
    367367    }
    368368
Note: See TracChangeset for help on using the changeset viewer.