Project

General

Profile

« Previous | Next » 

Revision 41162

keep Refactoring project...

View differences:

modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claims/migration/QueryBuilder.java
17 17
 * Created by argirok on 12/1/2016.
18 18
 */
19 19
/*
20
     Query Operations is the class that is responsible for the select queries in the old claims table
20
     Query Builder is the class that is responsible for the select queries in the old claims table
21 21
      and the insert queries in the new claim tables
22 22

  
23 23
      */
......
30 30
    private QueryGenerator queryGenerator;
31 31

  
32 32
    public QueryBuilder() {
33
        ApplicationContext context =  new ClassPathXmlApplicationContext("eu/dnetlib/data/claims/migration/springContext-claimsDemo.xml");
34
        claimBuilder = context.getBean(ClaimBuilder.class);
33
//        ApplicationContext context =  new ClassPathXmlApplicationContext("eu/dnetlib/data/claims/migration/springContext-claimsDemo.xml");
34
//        claimBuilder = context.getBean(ClaimBuilder.class);
35 35

  
36 36
    }
37 37

  
......
42 42
        sqlDAO.executeUpdateQuery(queryGenerator.generateCreateClaimTablesQuery());
43 43
    }
44 44
    public void getAndTransformConceptClaims(Integer limit, boolean insertToDB) throws Exception {
45
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectConceptDMFClaims(limit));
45
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectConceptDMFClaimsQuery(limit));
46 46
        while(rs.next()){
47 47
           // log.info(rs.getString("xml"));
48 48
            Claim claim= claimBuilder.getConceptDMFClaim(rs);
......
51 51
             if(claimValidation.validateClaim(claim)) {
52 52
                if (insertToDB) {
53 53
                    claim= createXMLFilesForClaim(claim);
54
                    //log.info(buildOperations.getQueryInsertClaim(claim));
54
                    //log.info(claimBuilder.getQueryInsertClaim(claim));
55 55
                    sqlDAO.executeUpdateQuery(claimBuilder.getQueryInsertClaim(claim));
56 56
                }
57 57
            }
......
62 62
        transformRelationClaims(rs,insertToDB);
63 63
    }
64 64
    public void getAndTransformRelationClaims(String startId, String endId,Integer limit, boolean insertToDB) throws Exception {
65
         ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.selectRelationClaims(startId,endId, limit));
65
         ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectRelationClaimsQuery(startId, endId, limit));
66 66
        transformRelationClaims(rs,insertToDB);
67 67

  
68 68
    }
......
74 74
            if(claimValidation.validateClaim(claim)) {
75 75
                if (insertToDB) {
76 76
                    claim= createXMLFilesForClaim(claim);
77
                    // log.info(buildOperations.getQueryInsertClaim(claim));
77
                    // log.info(claimBuilder.getQueryInsertClaim(claim));
78 78
                    sqlDAO.executeUpdateQuery(claimBuilder.getQueryInsertClaim(claim));
79 79
                }
80 80
            }
......
86 86
         transformAllClaims(insertToDB,rs);
87 87
    }
88 88
    public void getAndTransformClaimById(String id, boolean insertToDB) throws Exception {
89
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.selectClaimById(id));
89
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectClaimByIdQuery(id));
90 90
        transformAllClaims(insertToDB,rs);
91 91
    }
92 92
    public void transformAllClaims( boolean insertToDB, ResultSet rs) throws Exception {
......
101 101
                if(claimValidation.validateClaim(claim)) {
102 102
                    if (insertToDB) {
103 103
                       // claim= createXMLFilesForClaim(claim);
104
                        //log.info(buildOperations.getQueryInsertClaim(claim));
105
                        //   sqlDAO.executeUpdateQuery((buildOperations.getQueryInsertClaim(claim)));
104
                        //log.info(claimBuilder.getQueryInsertClaim(claim));
105
                        //   sqlDAO.executeUpdateQuery((claimBuilder.getQueryInsertClaim(claim)));
106 106
                    }
107 107
                }
108 108
            }else{
......
113 113
                    log.info(claim.toString());
114 114
                    if(claimValidation.validateClaim(claim)) {
115 115
                        if (insertToDB) {
116
                            //log.info(buildOperations.getQueryInsertClaim(claim));
116
                            //log.info(claimBuilder.getQueryInsertClaim(claim));
117 117
                          //  claim= createXMLFilesForClaim(claim);
118
                        //    sqlDAO.executeUpdateQuery((buildOperations.getQueryInsertClaim(claim)));
118
                        //    sqlDAO.executeUpdateQuery((claimBuilder.getQueryInsertClaim(claim)));
119 119
                        }
120 120
                    }
121 121
                }else{
......
194 194
    public void setClaimValidation(ClaimValidation claimValidation) {
195 195
        this.claimValidation = claimValidation;
196 196
    }
197

  
198
    public QueryGenerator getQueryGenerator() {
199
        return queryGenerator;
200
    }
201

  
202
    public void setQueryGenerator(QueryGenerator queryGenerator) {
203
        this.queryGenerator = queryGenerator;
204
    }
197 205
}
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/SqlDAO.java
74 74
	 *
75 75
	public String executePreparedQuery(ArrayList<String> data) throws Exception {
76 76
		try {
77
			ResultSet rs = sqlStore.executeQuery(queryGenerator.generateSelectClaimsQuery(), data);
77
			ResultSet rs = sqlStore.executeQuery(queryGenerator.generateSelectAllClaimsQuery(), data);
78 78
			return sqlStore.getResults(rs);
79 79

  
80 80
		} catch (Exception e)
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/TestClass.java
43 43
    @Autowired
44 44
	private SqlDAO sqlDAO;
45 45

  
46
    @Autowired
47
    private QueryGenerator queryGenerator;
46 48

  
47
	@Before
49

  
50
    @Before
48 51
	public void init() throws Exception {
49 52
		BasicConfigurator.configure();
50 53
		assertNotNull(sqlDAO);
......
57 60
	@Test
58 61
	public void testJob() throws Exception {
59 62

  
60
		log.info(sqlDAO.getQueryGenerator().selectClaims());
63
		log.info(queryGenerator.generateSelectAllClaimsQuery());
61 64

  
62 65

  
63 66
	}
......
90 93
    @Test
91 94
    public void selectRelationClaimsWithDatacite() throws Exception {
92 95
        //18 total
93
        ResultSet rs=sqlDAO.executePreparedQuery(sqlDAO.getQueryGenerator().selectRelationClaimsWithResultidLike("datacite", 18));
96
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectRelationClaimsWithResultidLikeQuery("datacite", 18));
94 97
        queryBuilder.transformRelationClaims(rs, true);
95 98
    }
96 99
    @Test
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/ClaimBuilder.java
39 39
        this.sqlDAO = sqlDAO;
40 40
    }
41 41

  
42
    public QueryGenerator getQueryGenerator() {
43
        return queryGenerator;
44
    }
42 45

  
46
    public void setQueryGenerator(QueryGenerator queryGenerator) {
47
        this.queryGenerator = queryGenerator;
48
    }
49

  
43 50
    public Result getDMFClaim(ResultSet rs) throws Exception {
44 51
        String xml = rs.getString("xml");
45 52
        Result r = ParsingClaimUtils.getResultFromDMF(xml);
......
207 214
        return r;
208 215
    }
209 216
    public Result getDMFClaimById(String resultId) throws Exception {
210
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectDMFById((resultId)));
217
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectDMFByIdQuery((resultId)));
211 218
        Result r =null;
212 219
        if(rs.next()) {
213 220
            r = this.getDMFClaim(rs);
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/QueryGenerator.java
13 13

  
14 14

  
15 15
public class QueryGenerator {
16
    /**
17
     * Call a stored procedure with the given name.
18
     *
19
     * @throws Exception
20
     */
21
    public String callProcedure(String procedure) {
22
        return "{call " + procedure + "()}";
23
    }
16
//Unused Method
17
//    /**
18
//     * Call a stored procedure with the given name.
19
//     *
20
//     * @throws Exception
21
//     */
22
//    public String callProcedure(String procedure) {
23
//        return "{call " + procedure + "()}";
24
//    }
24 25

  
25 26
    private String generateInsertResultQuery(String openaire_id, String result_type, String title, String collected_from , String external_url, String doi, String access_rights , String embargo_end_date, String best_license, String xml) {
26 27
        if(title!=null&&title.contains("'")){
......
149 150
    public  String generateInsertClaimResultQuery(Result targetResult, Result sourceResult, Claim claim) {
150 151

  
151 152
        return " WITH ins1 AS (\n" +
152
                generateInsertResultQuery(targetResult.getOpenaireId(),targetResult.getResultType(),targetResult.getTitle(),targetResult.getCollectedFrom(),targetResult.getExternal_url(),targetResult.getDoi(),targetResult.getAccessRights(),targetResult.getEmbargoEndDate(), targetResult.getBestLicense(),targetResult.getXml())+
153
                generateInsertResultQuery(targetResult.getOpenaireId(), targetResult.getResultType(), targetResult.getTitle(), targetResult.getCollectedFrom(), targetResult.getExternal_url(), targetResult.getDoi(), targetResult.getAccessRights(), targetResult.getEmbargoEndDate(), targetResult.getBestLicense(), targetResult.getXml())+
153 154
                "    ),\n ins2 AS (\n" +
154
                generateInsertResultQuery(sourceResult.getOpenaireId(),sourceResult.getResultType(),sourceResult.getTitle(),sourceResult.getCollectedFrom(),sourceResult.getExternal_url(),sourceResult.getDoi(),sourceResult.getAccessRights(), targetResult.getEmbargoEndDate(), sourceResult.getBestLicense(),sourceResult.getXml())+
155
                generateInsertResultQuery(sourceResult.getOpenaireId(), sourceResult.getResultType(), sourceResult.getTitle(), sourceResult.getCollectedFrom(), sourceResult.getExternal_url(), sourceResult.getDoi(), sourceResult.getAccessRights(), targetResult.getEmbargoEndDate(), sourceResult.getBestLicense(), sourceResult.getXml())+
155 156
                "   ),\n ins3 AS (\n" +
156
               generateInsertClaimQuery(claim.getDate(),claim.getUserMail(),claim.getSourceType(),claim.getTargetType(),claim.getSource().getOpenaireId(),claim.getTarget().getOpenaireId()) +
157
               generateInsertClaimQuery(claim.getDate(), claim.getUserMail(), claim.getSourceType(), claim.getTargetType(), claim.getSource().getOpenaireId(), claim.getTarget().getOpenaireId()) +
157 158
                "   ),\n ins4 AS (\n" +
158 159
                "    INSERT INTO has_source_result (claim_id, openaire_id, semantics)\n" +
159 160
                "    SELECT id, source_id,'resultResult_publicationDataset_isRelatedTo'\n" +
......
165 166
    public  String generateInsertClaimProjectQuery(Result targetResult, Project project, Claim claim) {
166 167

  
167 168
        return " WITH ins1 AS (\n" +
168
                generateInsertResultQuery(targetResult.getOpenaireId(),targetResult.getResultType(),targetResult.getTitle(),targetResult.getCollectedFrom(),targetResult.getExternal_url(),targetResult.getDoi(),targetResult.getAccessRights(), targetResult.getEmbargoEndDate(), targetResult.getBestLicense(), targetResult.getXml())+
169
                generateInsertResultQuery(targetResult.getOpenaireId(), targetResult.getResultType(), targetResult.getTitle(), targetResult.getCollectedFrom(), targetResult.getExternal_url(), targetResult.getDoi(), targetResult.getAccessRights(), targetResult.getEmbargoEndDate(), targetResult.getBestLicense(), targetResult.getXml())+
169 170
                "    ),\n ins2 AS (\n" +
170 171
                generateInsertProjectQuery(project.getOpenaireId(), project.getName(), project.getAcronym(), project.getFunderId(), project.getFunderName())+
171 172
                "    ),\n ins3 AS (\n" +
172
                generateInsertClaimQuery(claim.getDate(),claim.getUserMail(),claim.getSourceType(),claim.getTargetType(),claim.getSource().getOpenaireId(),claim.getTarget().getOpenaireId()) +
173
                generateInsertClaimQuery(claim.getDate(), claim.getUserMail(), claim.getSourceType(), claim.getTargetType(), claim.getSource().getOpenaireId(), claim.getTarget().getOpenaireId()) +
173 174
                "    ),\n ins4 AS (\n" +
174 175
                "    INSERT INTO has_source_project (claim_id, openaire_id,semantics)\n" +
175 176
                "    SELECT id, source_id,'resultProject_outcome_isProducedBy'\n" +
......
181 182
    public  String generateInsertClaimContextQuery(Result targetResult, Context context, Claim claim) {
182 183

  
183 184
        return " WITH ins1 AS (\n" +
184
                generateInsertResultQuery(targetResult.getOpenaireId(),targetResult.getResultType(),targetResult.getTitle(),targetResult.getCollectedFrom(),targetResult.getExternal_url(),targetResult.getDoi(),targetResult.getAccessRights(), targetResult.getEmbargoEndDate(), targetResult.getBestLicense(), targetResult.getXml())+
185
                generateInsertResultQuery(targetResult.getOpenaireId(), targetResult.getResultType(), targetResult.getTitle(), targetResult.getCollectedFrom(), targetResult.getExternal_url(), targetResult.getDoi(), targetResult.getAccessRights(), targetResult.getEmbargoEndDate(), targetResult.getBestLicense(), targetResult.getXml())+
185 186
                "    ),\n ins2 AS (\n" +
186 187
                generateInsertContextQuery(context.getOpenaireId(), context.getTitle())+
187 188
                "   ),\n ins3 AS (\n" +
188
                generateInsertClaimQuery(claim.getDate(),claim.getUserMail(),claim.getSourceType(),claim.getTargetType(),claim.getSource().getOpenaireId(),claim.getTarget().getOpenaireId()) +
189
                generateInsertClaimQuery(claim.getDate(), claim.getUserMail(), claim.getSourceType(), claim.getTargetType(), claim.getSource().getOpenaireId(), claim.getTarget().getOpenaireId()) +
189 190
                "    ), ins4 AS (\n" +
190 191
                "    INSERT INTO has_source_context(claim_id, openaire_id)\n" +
191 192
                "    SELECT id, source_id\n" +
......
276 277
    }
277 278
    //TODO Argiro here you can set up your mostly used queries and call them from the SQLDAO class
278 279
    // without having to change them in your test methods
279
    public String generateSelectClaimsQuery() {
280
    public String generateSelectAllClaimsQuery() {
280 281
        return " Select * from claims  where id = ?";
281 282

  
282 283
    }
283
    public String generateSelectDMFClaims(Integer limit) {
284
    public String generateSelectDMFClaimsQuery(Integer limit) {
284 285
        return " Select * from claims_view  where type='dmf2actions' and xml NOT ILIKE '%<oaf:concept%' limit "+limit;
285 286

  
286 287
    }
287
    public String generateSelectDMFById(String id) {
288
    public String generateSelectDMFByIdQuery(String id) {
288 289
        return " Select * from claims_view  where type='dmf2actions' and xml NOT ILIKE '%<oaf:concept%' and  resultid='"+id+"'  order by date desc limit 1";
289 290
    }
290
    public String generateSelectConceptDMFClaims(Integer limit) {
291
    public String generateSelectConceptDMFClaimsQuery(Integer limit) {
291 292
        return " Select * from claims_view  where ( type='dmf2actions' or type='updates2actions' ) and xml LIKE '%<oaf:concept%' limit "+limit;
292 293
    }
293 294
    public String generateSelectRelationClaimsQuery(Integer limit) {
294 295
        return " Select * from claims_view  where type='rels2actions'  limit "+limit;
295 296

  
296 297
    }
297
    public String selectRelationClaims(String startId,String endId, Integer limit) {
298
    public String generateSelectRelationClaimsQuery(String startId, String endId, Integer limit) {
298 299
        return " Select * from claims_view  where type='rels2actions'  and id>= "+startId+" and id <="+endId+ " order by id limit "+limit;
299 300

  
300 301
    }
301
    public String selectRelationClaimsWithResultidLike(String resultidLike, int limit) {
302
    public String generateSelectRelationClaimsWithResultidLikeQuery(String resultidLike, int limit) {
302 303
        return " Select * from claims_view  where type='rels2actions'  and resultid like '%"+resultidLike+"%' limit " +limit ;
303 304

  
304 305
    }
305
    public String selectClaimById(String id) {
306
    public static String generateSelectClaimByIdQuery(String id) {
306 307
        return " Select * from claims_view  where id='"+id+"'";
307 308

  
308 309
    }
309
    /**
310
     * Renames a database  SCHEMA from @n to @newDatabase
311
     *
312
     * @param oldSchema
313
     * @param newSchema
314
     * @throws Exception
315
     */
316
    public String renameSchema(String oldSchema, String newSchema) {
317
        return "ALTER SCHEMA " + oldSchema + " RENAME TO " + newSchema + ";";
318
    }
310
//   Unused Methods
311
//    /**
312
//     * Renames a database  SCHEMA from @n to @newDatabase
313
//     *
314
//     * @param oldSchema
315
//     * @param newSchema
316
//     * @throws Exception
317
//     */
318
//    public String renameSchema(String oldSchema, String newSchema) {
319
//        return "ALTER SCHEMA " + oldSchema + " RENAME TO " + newSchema + ";";
320
//    }
321
//
322
//    public String dropSchema(String oldSchema) {
323
//        return " DROP SCHEMA if exists " + oldSchema + " CASCADE ; ";
324
//    }
325
//
326
//    /**
327
//     * Renames a database from @oldDatabase to @newDatabase
328
//     *
329
//     * @param newDatabase
330
//     * @param oldDatabase oldDatabase
331
//     * @throws Exception
332
//     */
333
//    public String renameDatabase(String oldDatabase, String newDatabase) {
334
//        return " drop database if exists " + oldDatabase + " ;" + " alter  database " + newDatabase + " rename to " + oldDatabase + " ; ";
335
//
336
//    }
337
//
338
//    /**
339
//     * Creates a new schema from a given SQL file at @schemaPath
340
//     *
341
//     * @param schemaPath
342
//     * @throws Exception
343
//     */
344
//    public String createSchema(String schemaPath) throws IOException {
345
//
346
//        //InputStream in = ClassLoader.getSystemResourceAsStream("eu.dnetlib.data.eu.dnetlib.data.claimsDemo/schema.sql");
347
//        InputStream in = ClassLoader.getSystemResourceAsStream(schemaPath);
348
//
349
//
350
//        byte[] b = new byte[in.available()];
351
//        in.read(b);
352
//        String schema = new String(b);
353
//
354
//        in.close();
355
//        return schema;
356
//
357
//    }
358
//
359
//    public String setSearchPathDB(String user, String schemaList) {
360
//
361
//        return "ALTER ROLE " + user + " SET search_path TO " + schemaList + ";";
362
//    }
363
//
364
//
365
//    public String createDB(String database) {
366
//
367
//        return " DROP DATABASE IF EXISTS " + database + ";" + " CREATE DATABASE " + database + "  WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';";
368
//
369
//    }
319 370

  
320
    public String dropSchema(String oldSchema) {
321
        return " DROP SCHEMA if exists " + oldSchema + " CASCADE ; ";
322
    }
323 371

  
324
    /**
325
     * Renames a database from @oldDatabase to @newDatabase
326
     *
327
     * @param newDatabase
328
     * @param oldDatabase oldDatabase
329
     * @throws Exception
330
     */
331
    public String renameDatabase(String oldDatabase, String newDatabase) {
332
        return " drop database if exists " + oldDatabase + " ;" + " alter  database " + newDatabase + " rename to " + oldDatabase + " ; ";
333

  
334
    }
335

  
336
    /**
337
     * Creates a new schema from a given SQL file at @schemaPath
338
     *
339
     * @param schemaPath
340
     * @throws Exception
341
     */
342
    public String createSchema(String schemaPath) throws IOException {
343

  
344
        //InputStream in = ClassLoader.getSystemResourceAsStream("eu.dnetlib.data.eu.dnetlib.data.claimsDemo/schema.sql");
345
        InputStream in = ClassLoader.getSystemResourceAsStream(schemaPath);
346

  
347

  
348
        byte[] b = new byte[in.available()];
349
        in.read(b);
350
        String schema = new String(b);
351

  
352
        in.close();
353
        return schema;
354

  
355
    }
356

  
357
    public String setSearchPathDB(String user, String schemaList) {
358

  
359
        return "ALTER ROLE " + user + " SET search_path TO " + schemaList + ";";
360
    }
361

  
362

  
363
    public String createDB(String database) {
364

  
365
        return " DROP DATABASE IF EXISTS " + database + ";" + " CREATE DATABASE " + database + "  WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';";
366

  
367
    }
368

  
369

  
370 372
}
modules/uoa-claims -demo/claims-demo/src/main/resources/eu/dnetlib/data/claims/migration/springContext-claimsDemo.xml
28 28

  
29 29
    <bean id="claimValidation" class="eu.dnetlib.data.claims.migration.ClaimValidation"></bean>
30 30

  
31
    <bean id="buildOperations" class="eu.dnetlib.data.claimsDemo.BuildOperations">
31
    <bean id="claimBuilder" class="eu.dnetlib.data.claimsDemo.ClaimBuilder">
32 32
        <property name="sqlDAO" ref="sqlDao"/>
33
        <property name="queryGenerator" ref="queryGenerator"/>
33 34
    </bean>
34 35

  
35 36

  
36
    <bean id="queryOperation" class="eu.dnetlib.data.claims.migration.QueryOperations">
37
    <bean id="queryBuilder" class="eu.dnetlib.data.claims.migration.QueryBuilder">
37 38
        <property name="sqlDAO" ref="sqlDao"/>
38
        <property name="buildOperations" ref="buildOperations"/>
39
        <property name="buildOperations" ref="queryBuilder"/>
39 40
        <property name="claimValidation" ref="claimValidation"/>
41
        <property name="queryGenerator" ref="queryGenerator"/>
40 42
    </bean>
41 43

  
42 44

  
modules/uoa-claims -demo/claims-demo/src/main/resources/eu/dnetlib/data/claimsDemo/springContext-claimsDemo.xml
30 30

  
31 31
    <bean id="claimBuilder" class="eu.dnetlib.data.claimsDemo.ClaimBuilder">
32 32
        <property name="sqlDAO" ref="sqlDao"/>
33
        <property name="queryGenerator" ref="queryGenerator"/>
33 34
    </bean>
34 35

  
35 36

  
......
37 38
        <property name="sqlDAO" ref="sqlDao"/>
38 39
        <property name="claimBuilder" ref="claimBuilder"/>
39 40
        <property name="claimValidation" ref="claimValidation"/>
41
        <property name="queryGenerator" ref="queryGenerator"/>
40 42
    </bean>
41 43

  
42 44

  
43 45
    <bean id="sqlDao" class="eu.dnetlib.data.claimsDemo.SqlDAO">
44 46
        <property name="sqlStore" ref="sqlStore"/>
45
        <property name="queryGenerator" ref="queryGenerator"/>
47
        <!--<property name="queryGenerator" ref="queryGenerator"/>-->
46 48
    </bean>
47 49

  
48 50
    <bean id="sqlStore" class="eu.dnetlib.data.claimsDemo.SqlStore" init-method="init" destroy-method="destroy">

Also available in: Unified diff