Changeset 3220


Ignore:
Timestamp:
08/02/13 12:26:17 (11 years ago)
Author:
olhsha
Message:

getting, deleteing and adding annotations with existing sources. Dao is tested, rest is not.

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

Legend:

Unmodified
Added
Removed
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/nb-configuration.xml

    r3216 r3220  
    1919    <spring-data xmlns="http://www.netbeans.org/ns/spring-data/1">
    2020        <config-files>
    21             <config-file>src/test/resources/spring-test-config/mockPermissions.xml</config-file>
     21            <config-file>src/main/resources/spring-config/sourceDao.xml</config-file>
     22            <config-file>src/test/resources/spring-test-config/mockSourceDao.xml.xml</config-file>
    2223        </config-files>
    2324        <config-file-groups/>
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/BackendConstants.java

    r3168 r3220  
    3131    public static final int USER_HASH_PARAM_1 =  5;
    3232    public static final int USER_HASH_PARAM_2 =  19;
     33    public static final int SOURCE_HASH_PARAM_1 =  7;
     34    public static final int SOURCE_HASH_PARAM_2 =  23;
    3335    public static final String regExpIdentifier = "[a-zA-Z0-9_-]*";
    3436}
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDao.java

    r3218 r3220  
    2121import eu.dasish.annotation.backend.dao.NotebookDao;
    2222import eu.dasish.annotation.backend.dao.PermissionsDao;
     23import eu.dasish.annotation.backend.dao.SourceDao;
    2324import eu.dasish.annotation.backend.dao.UserDao;
    2425import eu.dasish.annotation.backend.identifiers.AnnotationIdentifier;
     
    2627import eu.dasish.annotation.schema.AnnotationBody;
    2728import eu.dasish.annotation.schema.AnnotationInfo;
     29import eu.dasish.annotation.schema.NewOrExistingSourceInfo;
     30import eu.dasish.annotation.schema.NewOrExistingSourceInfos;
    2831import eu.dasish.annotation.schema.ResourceREF;
    29 import eu.dasish.annotation.schema.Sources;
     32import eu.dasish.annotation.schema.SourceInfo;
    3033import java.sql.ResultSet;
    3134import java.sql.SQLException;
     
    5962   NotebookDao jdbcNotebookDao;
    6063   
     64   @Autowired
     65   SourceDao jdbcSourceDao;
     66   
    6167    public JdbcAnnotationDao(DataSource dataSource) {
    6268        setDataSource(dataSource);
     
    97103           annotationInfo.setOwner(getResourceREF(Integer.toString(rs.getInt(owner_id))));
    98104           annotationInfo.setHeadline(rs.getString(headline));
    99            annotationInfo.setTargetSources(getSources(rs.getString(body_xml)));
    100105           return annotationInfo;
    101106        }
     
    153158           return null;
    154159       }
    155        
    156         if (result.size()>1) {
    157            throw new SQLException("There are "+result.size()+" annotations with "+ annotation_id + " "+annotationID);
    158        }
    159160       return result.get(0);
    160161   }
     
    170171           result.setOwner(ownerREF);
    171172           
    172            
    173 //           ResourceREF permissionsREF = new ResourceREF();
    174 //           PermissionList permissionList = new PermissionList();
    175 //           permissionsREF.setRef(permissionList.getURI());
    176 //           result.setPermissions(permissionsREF);
     173           //////////////////////////
     174           List<SourceInfo> sourceInfoList = jdbcSourceDao.getSourceInfos(rs.getInt(annotation_id));
     175           NewOrExistingSourceInfos noeSourceInfos = jdbcSourceDao.contructNewOrExistingSourceInfo(sourceInfoList);
     176//           List<NewOrExistingSourceInfo> noeSourceInfoList = new ArrayList<NewOrExistingSourceInfo>();
     177//           for (SourceInfo sourceInfo: sourceInfoList) {
     178//                NewOrExistingSourceInfo noeSourceInfo = new NewOrExistingSourceInfo();
     179//                noeSourceInfo.setSource(sourceInfo);
     180//                noeSourceInfoList.add(noeSourceInfo);
     181//           }       
    177182//           
    178            //Permissions can be retrieved separately
    179            
    180            // TODO: add source, also to the database
     183//           
     184//           NewOrExistingSourceInfos noeSourceInfos = new  NewOrExistingSourceInfos();
     185//           noeSourceInfos.getTarget().addAll(noeSourceInfoList);
     186           result.setTargetSources(noeSourceInfos);
     187           ////////////////////////////////
    181188           
    182189           result.setBody(convertToAnnotationBody(rs.getString(body_xml)));
     
    230237   @Override   
    231238     public int deleteAnnotation(Number annotationId) throws SQLException{         
    232              
     239         
     240       //TODO: why  does it not work via calling notebook and permissions "remove" methods??
     241       
    233242        String sqlNotebooks = "DELETE FROM " + notebooksAnnotationsTableName + " where "+annotation_id + " = ?";
    234243        int affectedNotebooks = getSimpleJdbcTemplate().update(sqlNotebooks, annotationId);
    235        
    236                
     244                       
    237245        String sqlPermissions = "DELETE FROM " + permissionsTableName + " where "+annotation_id + " = ?";       
    238246        int affectedPermissions = getSimpleJdbcTemplate().update(sqlPermissions, annotationId);
     247       
     248        // TODO make a separate methods in sources DAO so that it handles removal of sources which are not referered by annotations
     249        String sqlTargetSources = "DELETE FROM " + annotationsSourcesTableName + " where "+annotation_id + " = ?";       
     250        int affectedSources = getSimpleJdbcTemplate().update(sqlTargetSources, annotationId);
    239251       
    240252        String sqlAnnotation = "DELETE FROM " + annotationTableName + " where "+annotation_id + " = ?";
     
    280292           
    281293            if (affectedRows == 1) {
     294                 //jdbcSourceDao method "addsources"                 
     295                 // Consider two cases: the one which exists already in the Db and the one which does not exists
    282296                 return result;
    283297            }
     
    329343    }
    330344   
    331     //TODO implement when xml-body stucture is discussed!
    332     //BTW do we have to get source REF, not the whole sources here??
    333     private Sources getSources(String someXml) {
    334         Sources result = new Sources();
    335         return result;
    336     }
    337    
    338     private <T> String makeListOfValues(List<T> vals) {
    339        
    340         if (vals == null) {
    341             return "()";
    342         }
    343        
    344         if (vals.isEmpty()) {           
    345             return "()";
    346         }
    347        
    348         String result = "(";
    349         int length = vals.size();
    350         for (int i=0; i<length-1; i++){
    351             result = result + vals.get(i).toString() +", ";
    352         }
    353         result = result +vals.get(length-1).toString()+")";
    354         return result;
    355     }
     345   
     346   
     347   
    356348   
    357349    //TODO: update when target sources and permissions are added
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/main/java/eu/dasish/annotation/backend/dao/impl/JdbcResourceDao.java

    r3216 r3220  
    3939    final static protected String notebooksAnnotationsTableName = "notebooks_annotations";
    4040    final static protected String permissionsTableName = "annotations_principals_permissions";
     41    final static protected String sourcesTableName = "target_source";
     42    final static protected String annotationsSourcesTableName = "annotations_target_sources";
    4143   
    4244    // base string constants: field Names
     
    5254    final static protected String time_stamp = "time_stamp";
    5355    final static protected String permission = "permission_";
     56    final static protected String target_source_id = "target_source_id";
     57    final static protected String link = "link";
     58    final static protected String version = "version";
    5459   
    5560    // derived string constants: table+field names
     
    104109    };
    105110   
    106      
     111   
     112    protected <T> String makeListOfValues(List<T> vals) {
     113       
     114        if (vals == null) {
     115            return "()";
     116        }
     117       
     118        if (vals.isEmpty()) {           
     119            return "()";
     120        }
     121       
     122        String result = "(";
     123        int length = vals.size();
     124        for (int i=0; i<length-1; i++){
     125            result = result + vals.get(i).toString() +", ";
     126        }
     127        result = result +vals.get(length-1).toString()+")";
     128        return result;
     129    }
    107130}
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/MockObjectsFactory.java

    r3216 r3220  
    2121import eu.dasish.annotation.backend.dao.NotebookDao;
    2222import eu.dasish.annotation.backend.dao.PermissionsDao;
     23import eu.dasish.annotation.backend.dao.SourceDao;
    2324import eu.dasish.annotation.backend.dao.UserDao;
    2425import org.jmock.Mockery;
     
    5253        return context.mock(PermissionsDao.class);
    5354    }
     55   
     56    public SourceDao newSourceDao() {
     57        return context.mock(SourceDao.class);
     58    }
    5459}
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/TestBackendConstants.java

    r3211 r3220  
    6565    public static final String _TEST_USER_5_EXT_ID = "00000000-0000-0000-0000-000000000113"; 
    6666   
    67     public static final String _TEST_USER_XXX_EXT_ID = "00000000-0000-0000-0000-000000000666"; 
     67    public static final String _TEST_USER_XXX_EXT_ID = "00000000-0000-0000-0000-000000000666";
     68   
     69 ////////////////////////////////////////////////////////////////////////////////////////////////////////////   
     70   
     71//    INSERT INTO target_source (external_id, link_uri, version_id) VALUES ('00000000-0000-0000-0000-000000000031', 'http://nl.wikipedia.org/wiki/Sagrada_Fam%C3%ADlia', 1); -- 1
     72//    INSERT INTO target_source (external_id, link_uri, version_id) VALUES ('00000000-0000-0000-0000-000000000032', 'http://nl.wikipedia.org/wiki/Antoni_Gaud%C3%AD', 3); --2
     73
     74   
     75    public static final String _TEST_SOURCE_1_EXT_ID = "00000000-0000-0000-0000-000000000031";
     76    public static final String _TEST_SOURCE_2_EXT_ID = "00000000-0000-0000-0000-000000000032";
     77   
     78    public static final String _TEST_SOURCE_1_LINK = "http://nl.wikipedia.org/wiki/Sagrada_Fam%C3%ADlia";
     79    public static final String _TEST_SOURCE_2_LINK = "http://nl.wikipedia.org/wiki/Antoni_Gaud%C3%AD";
     80   
     81    public static final int _TEST_SOURCE_1_VERSION_ID = 1;
     82    public static final int _TEST_SOURCE_2_VERSION_ID = 3;
    6883}
    6984
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/TestInstances.java

    r3211 r3220  
    2020import eu.dasish.annotation.schema.Annotation;
    2121import eu.dasish.annotation.schema.AnnotationBody;
     22import eu.dasish.annotation.schema.NewOrExistingSourceInfo;
     23import eu.dasish.annotation.schema.NewOrExistingSourceInfos;
    2224import eu.dasish.annotation.schema.ResourceREF;
     25import eu.dasish.annotation.schema.SourceInfo;
    2326import java.util.List;
    2427
     
    4548   
    4649    private Annotation makeAnnotationToAdd(){
    47         Annotation result = makeAnnotation(TestBackendConstants._TEST_ANNOT_TO_ADD_BODY, TestBackendConstants._TEST_ANNOT_TO_ADD_HEADLINE, 5);
    48         return result;
     50       Annotation result = makeAnnotation(TestBackendConstants._TEST_ANNOT_TO_ADD_BODY, TestBackendConstants._TEST_ANNOT_TO_ADD_HEADLINE, 5);
     51       
     52       SourceInfo sourceInfo =  new SourceInfo();
     53       sourceInfo.setLink(TestBackendConstants._TEST_SOURCE_1_LINK);
     54       sourceInfo.setRef(TestBackendConstants._TEST_SOURCE_1_EXT_ID);
     55       sourceInfo.setVersion(Integer.toString(TestBackendConstants._TEST_SOURCE_1_VERSION_ID));
     56       
     57       NewOrExistingSourceInfo noeSourceInfo =  new NewOrExistingSourceInfo();
     58       noeSourceInfo.setSource(sourceInfo);
     59       NewOrExistingSourceInfos noeSourceInfos =  new NewOrExistingSourceInfos();
     60       noeSourceInfos.getTarget().add(noeSourceInfo);
     61       result.setTargetSources(noeSourceInfos);
     62       
     63       return result;
    4964    }
    5065   
    51     // add the other fields whengetAnnotation is completed
     66   
     67    // so far tests only adding annot with existing sources!!!
     68    // TOD: add non-existing sources
    5269    private Annotation makeAnnotation(String bodyTxt, String headline, int ownerId){
    5370        Annotation result = new Annotation();
     
    5976        ResourceREF owner = new ResourceREF();
    6077        owner.setRef(String.valueOf(ownerId));
    61         result.setOwner(owner);
    62         return result;
     78        result.setOwner(owner);       
     79     
     80       return result;
    6381    }
     82   
     83    //private
    6484   
    6585   
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/java/eu/dasish/annotation/backend/dao/impl/JdbcAnnotationDaoTest.java

    r3218 r3220  
    2222import eu.dasish.annotation.backend.dao.NotebookDao;
    2323import eu.dasish.annotation.backend.dao.PermissionsDao;
     24import eu.dasish.annotation.backend.dao.SourceDao;
    2425import eu.dasish.annotation.backend.identifiers.AnnotationIdentifier;
    2526import eu.dasish.annotation.schema.Annotation;
    2627import eu.dasish.annotation.schema.AnnotationInfo;
     28import eu.dasish.annotation.schema.NewOrExistingSourceInfo;
     29import eu.dasish.annotation.schema.NewOrExistingSourceInfos;
    2730import eu.dasish.annotation.schema.ResourceREF;
     31import eu.dasish.annotation.schema.SourceInfo;
    2832import java.sql.SQLException;
    2933import java.util.ArrayList;
     
    4347 */
    4448@RunWith(SpringJUnit4ClassRunner.class)
    45 @ContextConfiguration({"/spring-test-config/dataSource.xml", "/spring-test-config/mockery.xml", "/spring-test-config/mockNotebookDao.xml",  "/spring-test-config/mockUserDao.xml", "/spring-test-config/mockPermissionsDao.xml", "/spring-config/annotationDao.xml"})
     49@ContextConfiguration({"/spring-test-config/dataSource.xml", "/spring-test-config/mockery.xml", "/spring-test-config/mockNotebookDao.xml", 
     50    "/spring-test-config/mockUserDao.xml", "/spring-test-config/mockPermissionsDao.xml", "/spring-test-config/mockSourceDao.xml","/spring-config/annotationDao.xml"})
    4651public class JdbcAnnotationDaoTest extends JdbcResourceDaoTest{
    4752   
     
    5459    @Autowired
    5560    private NotebookDao notebookDao;
     61   
     62    @Autowired
     63    private SourceDao sourceDao;
    5664   
    5765    @Autowired
     
    153161       System.out.println("getAnnotation");
    154162       
    155        final Annotation annotaion = jdbcAnnotationDao.getAnnotation(2);
    156        assertEquals(TestBackendConstants._TEST_ANNOT_2_HEADLINE, annotaion.getHeadline());
    157        assertEquals(String.valueOf(TestBackendConstants._TEST_ANNOT_2_OWNER), annotaion.getOwner().getRef());
    158        assertEquals(TestBackendConstants._TEST_ANNOT_2_BODY, annotaion.getBody().getAny().get(0)); // when the body is elaborated it will be changed
     163       final Number testAnnotationID = 2;
     164       
     165       
     166       SourceInfo sourceOneInfo =  new SourceInfo();
     167       sourceOneInfo.setLink(TestBackendConstants._TEST_SOURCE_1_LINK);
     168       sourceOneInfo.setRef(TestBackendConstants._TEST_SOURCE_1_EXT_ID);
     169       sourceOneInfo.setVersion(Integer.toString(TestBackendConstants._TEST_SOURCE_1_VERSION_ID));
     170       
     171       SourceInfo sourceTwoInfo =  new SourceInfo();
     172       sourceTwoInfo.setLink(TestBackendConstants._TEST_SOURCE_2_LINK);
     173       sourceTwoInfo.setRef(TestBackendConstants._TEST_SOURCE_2_EXT_ID);
     174       sourceTwoInfo.setVersion(Integer.toString(TestBackendConstants._TEST_SOURCE_2_VERSION_ID));
     175       
     176       final List<SourceInfo> sourceInfoList = new ArrayList<SourceInfo>();
     177       sourceInfoList.add(sourceOneInfo);
     178       sourceInfoList.add(sourceTwoInfo);
     179       
     180       NewOrExistingSourceInfo noeSourceOneInfo =  new NewOrExistingSourceInfo();
     181       noeSourceOneInfo.setSource(sourceOneInfo);
     182       NewOrExistingSourceInfo noeSourceTwoInfo =  new NewOrExistingSourceInfo();
     183       noeSourceTwoInfo.setSource(sourceTwoInfo);
     184       
     185       List<NewOrExistingSourceInfo> noeSourceInfoList = new ArrayList<NewOrExistingSourceInfo>();
     186       noeSourceInfoList.add(noeSourceOneInfo);
     187       noeSourceInfoList.add(noeSourceTwoInfo);
     188       final NewOrExistingSourceInfos noeSourceInfos= new NewOrExistingSourceInfos();
     189       noeSourceInfos.getTarget().addAll(noeSourceInfoList);
     190       
     191        mockery.checking(new Expectations() {
     192            {
     193                oneOf(sourceDao).getSourceInfos(testAnnotationID );
     194                will(returnValue(sourceInfoList));
     195               
     196                oneOf(sourceDao).contructNewOrExistingSourceInfo(sourceInfoList);
     197                will(returnValue(noeSourceInfos));
     198            }
     199        });
     200       
     201       
     202       final Annotation annotation = jdbcAnnotationDao.getAnnotation(testAnnotationID.intValue());
     203       assertEquals(TestBackendConstants._TEST_ANNOT_2_HEADLINE, annotation.getHeadline());
     204       assertEquals(String.valueOf(TestBackendConstants._TEST_ANNOT_2_OWNER), annotation.getOwner().getRef());
     205       assertEquals(TestBackendConstants._TEST_ANNOT_2_BODY, annotation.getBody().getAny().get(0)); // when the body is elaborated it will be changed
     206       
     207       assertEquals(sourceOneInfo.getRef(), annotation.getTargetSources().getTarget().get(0).getSource().getRef());
     208       assertEquals(sourceOneInfo.getLink(), annotation.getTargetSources().getTarget().get(0).getSource().getLink());
     209       assertEquals(sourceOneInfo.getVersion(), annotation.getTargetSources().getTarget().get(0).getSource().getVersion());
     210       
     211       assertEquals(sourceTwoInfo.getRef(), annotation.getTargetSources().getTarget().get(1).getSource().getRef());
     212       assertEquals(sourceTwoInfo.getLink(), annotation.getTargetSources().getTarget().get(1).getSource().getLink());
     213       assertEquals(sourceTwoInfo.getVersion(), annotation.getTargetSources().getTarget().get(1).getSource().getVersion());
     214       
    159215             
    160216       final Annotation annotaionNull = jdbcAnnotationDao.getAnnotation(null);
     
    196252        final Annotation annotationToAdd = testInstances.getAnnotationToAdd();
    197253       
     254        final Number testAnnotationID = 6;
     255       
     256        SourceInfo sourceInfo =  new SourceInfo();
     257        sourceInfo.setLink(TestBackendConstants._TEST_SOURCE_1_LINK);
     258        sourceInfo.setRef(TestBackendConstants._TEST_SOURCE_1_EXT_ID);
     259        sourceInfo.setVersion(Integer.toString(TestBackendConstants._TEST_SOURCE_1_VERSION_ID));
     260        final List<SourceInfo> sourceInfoList =  new ArrayList<SourceInfo>();
     261        sourceInfoList.add(sourceInfo);
     262       
     263        mockery.checking(new Expectations() {
     264            {
     265                oneOf(sourceDao).getSourceInfos(testAnnotationID);
     266                will(returnValue(sourceInfoList));
     267               
     268                oneOf(sourceDao).contructNewOrExistingSourceInfo(sourceInfoList);
     269                will(returnValue(annotationToAdd.getTargetSources()));
     270            }
     271        });
    198272       
    199273        Annotation result = jdbcAnnotationDao.addAnnotation(annotationToAdd, 5);
     
    228302       
    229303    }
     304   
     305    //////////// helpers //////////////////////
     306   
     307   
    230308}
    231309
  • DASISH/t5.6/backend/annotator-backend/trunk/annotator-backend/src/test/resources/spring-test-config/mockUserDao.xml

    r3205 r3220  
    2424       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    2525">
    26    <!-- Context for testing the annotations service with mock implementations -->
     26   <!-- Context for testing the sources service with mock implementations -->
    2727           
    2828    <!-- Mocked users -->
Note: See TracChangeset for help on using the changeset viewer.