diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..f619a53 --- /dev/null +++ b/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..608adb6 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + database-rm-algorithms + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f9fe345 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..6249222 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/QueryResult.csv b/QueryResult.csv new file mode 100644 index 0000000..18aa35f --- /dev/null +++ b/QueryResult.csv @@ -0,0 +1,4 @@ +csquarecode, depthmin, depthmax, depthmean, depthsd, sstanmean, sstansd, sstmnmax, sstmnmin, sstmnrange, sbtanmean, salinitymean, salinitysd, salinitymax, salinitymin, salinitybmean, primprodmean, iceconann, iceconspr, iceconsum, iceconfal, iceconwin, faoaream, eezall, lme, landdist, oceanarea, centerlat, centerlong +"1000:100:1","4760.0","5014.0","4896.0","46.9","27.27","0.38","30.05","23.63","6.42","1.89","34.76","","35.45","34.09","34.826","450","0.0","0.0","0.0","0.0","0.0","34","0","0","594","3091.036","0.25","0.25" +"1000:100:2","4687.0","4991.0","4851.0","47.44","27.27","0.38","30.05","23.63","6.42","1.89","34.76","","35.45","34.09","34.826","471","0.0","0.0","0.0","0.0","0.0","34","0","0","606","3091.036","0.25","0.75" +"1000:100:3","4778.0","4990.0","4890.0","34.23","27.27","0.38","30.05","23.63","6.42","1.89","34.76","","35.45","34.09","34.826","440","0.0","0.0","0.0","0.0","0.0","34","0","0","539","3090.8","0.75","0.25" diff --git a/QueryResult.txt b/QueryResult.txt new file mode 100644 index 0000000..e69de29 diff --git a/SampleResult.csv b/SampleResult.csv new file mode 100644 index 0000000..70fc8f9 --- /dev/null +++ b/SampleResult.csv @@ -0,0 +1,101 @@ +centerlong, centerlat, oceanarea, landdist, lme, eezall, faoaream, iceconwin, iceconfal, iceconsum, iceconspr, iceconann, primprodmean, salinitybmean, salinitymin, salinitymax, salinitysd, salinitymean, sbtanmean, sstmnrange, sstmnmin, sstmnmax, sstansd, sstanmean, depthsd, depthmean, depthmax, depthmin, csquarecode +"-162.25","-0.75","3090.8","339","0","845","77","0","0","0","0","0","483","","35.1","35.44","","35.31","","5.61","24.34","29.95","0.92","27.54","52.05","5292","5428","5162","5016:102:3" +"-25.25","36.75","2402.4263","22","0","622","27","0","0","0","0","0","347","34.9546","36.13","36.43","","36.27","3.09","9.22","15.78","25","0.44","19.62","853.11","2670","3892","0","7302:465:3" +"143.25","22.75","2850.583","322","0","394, 580","61","0","0","0","0","0","197","34.6813","34.71","35.07","","34.91","1.5","6.55","23.44","29.99","0.42","27.17","832.55","3263","4659","1249","1214:123:3" +"35.75","19.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1103:495:4" +"-69.25","-7.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","5006:479:3" +"129.75","-34.25","2555.043","309","43","36","57","0","0","0","0","0","318","34.7372","35.48","35.88","","35.69","1.96","6.4","14.34","20.74","0.31","17.25","464.68","2438","3499","1573","3312:249:2" +"-125.75","-81.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","5812:215:2" +"-108.25","46.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","7410:468:1" +"-102.25","65.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","7610:352:1" +"74.25","54.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1507:144:1" +"-74.25","-78.25","0","5","61","0","48","1.5","1.5","1.5","1.5","1.5","0","33.4334","33.5","34.2","","33.9","-1.67","0.01","-1.79","-1.78","0","-1.79","0","1","1","0","5707:384:1" +"135.25","-26.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","3213:465:1" +"178.25","41.75","2306.112","1101","0","0","61","0","0","0","0","0","391","34.6875","33.53","34.2","","33.88","1.62","12.91","7.76","20.67","0.61","12.41","308.23","5665","6257","4778","1417:218:3" +"-16.75","57.75","1649.437","504","0","0","27","0","0","0","0","0","419","35.0471","35.24","35.37","","35.32","5.07","6","8.21","14.21","0.24","10.49","45.25","1184","1282","1117","7501:476:4" +"23.75","79.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1702:393:4" +"-28.75","-74.25","839.04","197","0","0","48","0.34","0.89","0.93","0.74","0.73","363","34.6665","33.31","34.4","","34.08","0.04","0.41","-1.79","-1.38","0.01","-1.79","782.86","2026","2855","368","5702:248:2" +"-113.75","-36.75","2476.728","1183","0","0","87","0","0","0","0","0","236","34.673","34.15","34.78","","34.43","1.8","10.1","12.83","22.93","0.39","16.69","690.44","2468","3283","540","5311:363:4" +"149.25","-64.25","1342.899","385","0","0","58","0.006666667","0.47","0.64","0.16","0.31","246","34.68","33.58","33.99","","33.8","-0.17","3.11","-1.79","1.32","0.17","-1.19","42.16","3591","3649","3486","3614:249:1" +"-14.75","37.25","2460.494","540","0","0","27","0","0","0","0","0","338","34.9463","36.11","36.4","","36.22","2.8","7.58","14.85","22.43","0.33","18.3","643","2819","4417","1683","7301:374:2" +"-133.25","-15.25","2982.221","869","0","0","77","0","0","0","0","0","303","34.6907","36.19","36.47","","36.34","1.54","3.66","25.6","29.26","0.32","27.35","216.33","4093","4331","2921","5113:353:1" +"-169.75","-60.25","1533.838","1402","0","0","88","0","0","0","0","5.5E-5","218","34.7061","33.93","34.1","","33.97","0.86","6.14","-0.13","6.01","0.3","2.05","345.54","4183","4780","3588","5616:209:2" +"-24.75","-28.75","2710.02","1071","0","0","41","0","0","0","0","0","164","34.7535","35.83","36.3","","36.09","1.14","8.77","18.28","27.05","0.3","22.11","149.49","4907","5268","4531","5202:384:4" +"-122.75","27.75","2735.554","504","3","0","77","0","0","0","0","0","232","34.6819","33.7","33.9","","33.81","1.55","5.77","16.63","22.4","0.45","19.18","344.03","4204","4642","2869","7212:372:4" +"-2.25","6.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","7000:362:1" +"144.25","33.75","2570.127","435","0","0, 390","61","0","0","0","0","0","367","34.6916","34.4","34.79","","34.61","1.56","11.73","17.18","28.91","0.44","22.17","80.88","5623","5792","5385","1314:134:3" +"78.75","70.75","0","0","0","","-1","","","","","","0","","21.68","28.02","","26.23","","4.65","-1.77","2.88","0.21","-1.51","-9999","0","0","0","1707:208:4" +"-110.75","-60.25","1533.838","1360","0","0","88","0","0","0","0","1.2333E-4","212","34.7066","33.71","34.18","","34.03","0.42","4.47","0.97","5.44","0.42","2.95","27.52","5132","5178","5079","5611:100:2" +"123.25","-63.25","1391.284","372","0","0","58","0.0033333334","0.32","0.26","0.01","0.15","235","34.6739","33.81","34.05","","33.91","-0.25","3.24","-1.79","1.45","0.12","-0.97","63.24","3915","4036","3805","3612:133:1" +"157.75","-38.25","2427.466","712","0","0","81","0","0","0","0","0","431","34.7086","35.38","35.71","","35.49","1.07","8.19","13.97","22.16","0.35","17.2","100.98","4813","5016","4566","3315:487:2" +"-52.75","-54.75","1783.993","503","0","0","41","0","0","0","0","6.833E-5","394","34.7144","33.81","34.11","","34.05","0.87","6.15","1.82","7.97","0.34","4.93","247.93","3656","4102","3069","5505:142:4" +"131.25","7.75","3062.831","354","0","585","71","0","0","0","0","0","205","34.6761","33.99","34.48","","34.16","1.7","3.74","27.02","30.76","0.25","28.93","305.41","4986","5841","4356","1013:371:3" +"-123.25","-39.75","2376.54","1717","0","0","81","0","0","0","0","0","266","34.7039","34.11","34.32","","34.19","1.4","7.6","11.14","18.74","0.35","14.31","86.78","4035","4250","3795","5312:393:3" +"19.75","-20.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","3201:209:2" +"-150.25","-50.75","1955.733","2105","0","0","81","0","0","0","0","0","315","34.7097","34.1","34.55","","34.35","1.1","4.77","7.38","12.15","0.26","9.19","194.62","4520","4947","4120","5515:100:3" +"49.25","1.75","3089.624","328","0","706","51","0","0","0","0","0","668","34.7181","35.18","35.53","","35.38","1.31","6.09","24.31","30.4","0.34","27.27","23.83","4647","4698","4578","1004:219:3" +"-136.75","80.25","523.47","496","64","0","18","0.98","0.93","0.9","0.98","0.94","0","34.9611","29.75","31.97","","30.57","-0.31","0.01","-1.79","-1.78","0","-1.79","24.95","3694","3719","3635","7813:206:2" +"114.25","-67.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","3611:374:3" +"44.75","-55.25","1761.897","1095","0","0","58","0","0","0","0","1.2333E-4","188","34.6607","33.86","34.04","","33.98","-0.16","4.39","-1.41","2.98","0.23","0.74","87.48","4415","4655","4217","3504:354:2" +"-26.25","-88.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","5802:486:3" +"-171.75","45.25","2176.155","818","0","0","67","0","0","0","0","0","381","34.6828","32.81","33.43","","33.16","1.62","10.27","4.59","14.86","0.6","8.59","184.9","5542","5822","4975","7417:351:2" +"45.25","19.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1104:495:3" +"-56.75","6.25","3072.693","27","17","740, 328","31","0","0","0","0","0","1339","36.2528","28.47","36.72","","34.93","26.01","3.63","25.69","29.32","0.3","27.28","24.64","64","121","0","7005:466:2" +"-38.25","-82.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","5803:228:1" +"-86.75","36.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","7308:466:4" +"136.75","67.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1613:476:4" +"86.75","-65.75","1269.559","134","0","0","58","0.48","0.79","0.81","0.5","0.64","244","34.7089","33.36","34.29","","33.68","0.59","1.31","-1.79","-0.48","0.1","-1.63","712.05","1240","2546","2","3608:456:4" +"-171.75","-58.25","1626.562","1158","0","0","81","0","0","0","0","1.5083E-4","249","34.7062","33.93","34.11","","33.99","0.88","5.85","2.16","8.01","0.24","3.93","316.39","4462","5079","3865","5517:381:2" +"-163.75","26.25","2772.292","346","0","842","77","0","0","0","0","0","225","34.6892","35.06","35.48","","35.28","1.51","7","20.33","27.33","0.36","23.87","53.07","4879","5007","4719","7216:363:2" +"-73.75","-80.25","0","47","61","0","48","1.5","1.5","1.5","1.5","1.5","0","33.456","33.4","34.18","","33.9","-1.57","0.01","-1.79","-1.78","0","-1.79","0","1","1","1","5807:103:2" +"-97.75","-80.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","5809:207:4" +"161.75","-68.75","1120.32","134","0","0","88","0.72","0.92","0.92","0.68","0.81","158","34.6553","33.62","34.17","","33.85","0.02","0.84","-1.79","-0.95","0.03","-1.77","132.05","1980","2340","1721","3616:381:4" +"86.75","-59.25","1580.44","804","0","0","58","0","0.06","0.03","0","0.02","286","34.6685","33.76","34.06","","33.91","-0.05","4.55","-1.79","2.76","0.23","-0.17","77.86","4668","4864","4524","3508:496:2" +"-113.25","25.25","2795.73","126","3","484","77","0","0","0","0","0","685","34.6269","33.75","34.4","","34.08","2.22","12.25","16.52","28.77","0.87","21.31","891.24","1887","3750","124","7211:353:1" +"141.75","40.75","2318.266","20","49","390","61","0.03","0","0","0.05","0.02","719","33.7662","32.95","33.83","","33.34","7.57","20.77","3.29","24.06","0.53","12.68","129.06","163","617","0","1414:101:4" +"174.25","-46.75","2117.945","324","0","554","81","0","0","0","0","0","579","34.5455","34.14","34.64","","34.39","2.67","8.11","7.14","15.25","0.43","10.32","151.03","1574","1810","1299","3417:364:3" +"-130.75","-36.25","2492.773","1269","0","0","81","0","0","0","0","0","213","34.7028","34.25","34.84","","34.57","1.38","8.4","13.05","21.45","0.3","16.45","174.92","4248","4528","3695","5313:360:2" +"-5.25","-58.75","1603.562","751","0","0","48","0.03","0.63","0.45","0","0.28","251","34.6436","33.7","34.18","","33.98","-0.45","3.19","-1.79","1.4","0.17","-0.78","325.51","4536","5202","3872","5500:485:3" +"76.25","-12.75","3014.847","806","0","0","51","0","0","0","0","0","249","34.7224","34.08","34.86","","34.48","1.32","5.39","24.68","30.07","0.22","27.14","165.37","5278","5578","4299","3107:226:3" +"-179.75","-46.75","2117.945","173","0","554","81","0","0","0","0","0","602","34.7472","34.12","34.42","","34.32","1.46","9.23","7.16","16.39","0.5","10.74","254.31","2812","3225","2300","5417:469:4" +"-43.75","-23.75","2829.287","126","15","76","41","0","0","0","0","0","592","36.0741","35.65","36.24","","35.9","18.88","7.22","20.37","27.59","0.28","23.94","15.08","116","141","79","5204:133:4" +"-69.25","-35.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","5306:459:1" +"3.75","17.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1100:373:4" +"-91.25","-21.25","2880.897","1347","0","0","87","0","0","0","0","0","227","34.6912","35.24","35.79","","35.56","1.8","5.37","18.72","24.09","0.28","21.22","182.36","4019","4308","3505","5209:111:1" +"10.75","85.75","229.074","434","64","0","27","0.96","0.92","0.93","0.97","0.94","0","34.9439","32.02","33.02","","32.57","-0.71","0.01","-1.79","-1.78","0","-1.79","296.83","3742","4206","3116","1801:350:4" +"130.25","22.75","2850.583","296","0","393","61","0","0","0","0","0","213","34.6861","34.5","34.89","","34.72","1.71","8.3","22.25","30.55","0.44","26.7","351.85","5371","5887","4238","1213:120:3" +"-58.75","37.25","2460.494","772","0","0","21","0","0","0","0","0","362","34.8946","36.13","36.6","","36.37","2.29","10.03","17.67","27.7","0.25","21.91","429.79","4926","5359","2898","7305:478:2" +"-15.25","28.25","2586.7463","23","27","723","34","0","0","0","0","0","376","35.1071","36.41","36.61","","36.52","4.22","6.17","17.74","23.91","0.39","20.76","1082.32","2156","3512","0","7201:485:1" +"44.25","64.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1604:144:3" +"-138.25","-24.25","2818.316","279","0","258","77","0","0","0","0","0","141","34.6935","35.5","36.25","","35.8","1.49","5.93","21.58","27.51","0.36","24.39","113.26","4188","4484","3895","5213:248:1" +"25.75","20.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1202:205:4" +"-117.25","56.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","7511:467:3" +"93.25","-30.25","2670.172","1699","0","0","57","0","0","0","0","0","208","34.7327","35.63","35.96","","35.78","1.87","8.19","15.46","23.65","0.36","19.17","83.71","2333","2559","2140","3309:103:1" +"59.25","20.25","2900.011","104","32","512","51","0","0","0","0","0","1621","34.8484","35.81","36.47","","36.2","3.11","5.71","23.51","29.22","0.26","26.32","839.04","2227","3166","4","1205:209:1" +"177.75","44.25","2214.136","826","0","0","61","0","0","0","0","1.333E-5","393","34.6875","33.07","33.62","","33.33","1.61","11.87","4.56","16.43","0.58","8.97","32.16","5673","5755","5539","1417:247:2" +"90.75","-10.25","3041.734","746","0","0","57","0","0","0","0","0","278","34.7136","34.09","34.98","","34.36","1.2","4.09","26.02","30.11","0.25","27.83","242.56","4959","5364","4515","3109:100:2" +"-167.25","-47.25","2098.217","811","0","0","81","0","0","0","0","0","416","34.7036","34.53","34.73","","34.66","0.95","6.51","8.64","15.15","0.38","11.1","110.06","5135","5407","4673","5416:477:1" +"43.75","-73.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","3704:133:2" +"-136.75","-75.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","5713:456:4" +"31.75","-69.75","10.6987","58","0","0","58","1.5","1.5","1.5","1.5","1.5","183","34.3177","33.45","34.38","","33.88","-1.43","0.9","-1.79","-0.89","0.03","-1.77","56.55","89","180","1","3603:391:4" +"-113.75","76.75","495.9311","4","0","124","18","0.95","0.89","0.79","0.96","0.9","79","34.5247","19.81","29.95","","28.13","0.17","0.04","-1.79","-1.75","0","-1.79","109.26","206","336","0","7711:363:4" +"94.25","-77.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","3709:374:1" +"159.75","69.75","224.6727","2","0","644","18","0.94","0.55","0.37","0.95","0.71","248","22.9766","17.7","29.04","","25.17","0.04","2.68","-1.79","0.89","0.1","-1.63","1.03","1","3","0","1615:499:4" +"-26.75","54.75","1783.993","1058","0","0","27","0","0","0","0","0","500","34.9497","34.95","35.19","","35.07","2.78","7.07","7.13","14.2","0.54","10.19","74.29","3285","3541","3056","7502:246:4" +"143.25","64.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1614:143:1" +"-145.25","-86.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","5814:465:3" +"90.75","77.25","675.3681","6","58","644","18","0.95","0.63","0.64","0.93","0.79","77","32.9421","26.76","31.29","","28.79","-1.02","0.92","-1.79","-0.87","0.05","-1.77","8.05","17","36","0","1709:370:2" +"112.25","66.75","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1611:362:3" +"-103.25","15.75","2975.012","294","11","484","77","0","0","0","0","0","359","34.6736","33.77","34.29","","34.01","1.8","3.42","26.81","30.23","0.25","28.6","194.98","3366","3716","2806","7110:353:3" +"-16.75","13.75","2161.787","22","27","686, 270","34","0","0","0","0","0","2536","35.5164","34","35.66","","35.09","18.34","10.4","18.7","29.1","0.47","25.17","33.92","43","163","0","7101:236:4" +"-172.25","85.25","255.966","1001","64","0","18","0.99","0.94","0.93","0.99","0.95","0","34.9448","29.92","31.64","","30.74","-0.39","0.01","-1.79","-1.78","0","-1.79","117.56","1706","1968","1448","7817:352:1" +"-102.25","56.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","7510:362:1" +"-91.75","-61.75","1463.062","806","0","0","88","0","0","0","0","1.333E-5","186","34.7022","33.73","34.06","","33.99","0.45","5.78","-0.34","5.44","0.4","2.75","31.84","4894","4927","4778","5609:111:4" +"76.75","-53.75","1827.777","239","0","334","58","0","0","0","0","9.667E-5","293","34.7302","33.75","34","","33.89","1.87","4.38","-0.89","3.49","0.26","1.31","82.26","1561","1705","1369","3507:236:4" +"108.75","-53.75","1827.777","1348","0","0","57","0","0","0","0","2.667E-5","315","34.6853","33.84","34.03","","33.95","0.13","5.25","-0.09","5.16","0.34","2.41","89.45","3713","3982","3545","3510:238:4" +"-109.25","-46.75","2117.945","2206","0","0","87","0","0","0","0","0","249","34.7085","34.04","34.28","","34.14","1.67","5.89","7.02","12.91","0.34","9.6","44.76","3221","3327","3117","5410:469:3" +"135.75","64.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","1613:245:2" +"74.75","-28.25","2722.891","1142","0","0","51","0","0","0","0","0","154","34.7296","35.67","35.95","","35.79","1.58","7.68","17.91","25.59","0.29","21.34","208.28","3151","3726","2599","3207:384:2" +"-167.75","9.75","3046.418","729","0","0","77","0","0","0","0","0","247","34.7006","34.15","34.66","","34.4","1.31","3.9","25.57","29.47","0.29","27.86","147.2","5111","5450","4743","7016:497:4" +"72.25","-43.75","2232.874","642","0","0","51","0","0","0","0","0","412","34.7202","34.17","34.85","","34.52","1.15","6.28","9.59","15.87","0.32","12.17","38.76","3709","3819","3550","3407:132:3" +"-1.75","-87.25","0","0","0","","-1","","","","","","0","","","","","","","","","","","","","0","0","0","5800:371:2" diff --git a/SampleResult.txt b/SampleResult.txt new file mode 100644 index 0000000..4fc4040 --- /dev/null +++ b/SampleResult.txt @@ -0,0 +1,101 @@ +percentage, isofficial, language, countrycode +52.4,true,Pashto,AFG +95.6,true,Dutch,NLD +86.2,true,Papiamento,ANT +97.9,true,Albaniana,ALB +86,true,Arabic,DZA +90.6,true,Samoan,ASM +44.6,false,Spanish,AND +37.2,false,Ovimbundu,AGO +0,true,English,AIA +95.7,false,Creole English,ATG +42,true,Arabic,ARE +96.8,true,Spanish,ARG +93.4,true,Armenian,ARM +76.7,false,Papiamento,ABW +81.2,true,English,AUS +89,true,Azerbaijani,AZE +89.7,false,Creole English,BHS +67.7,true,Arabic,BHR +97.7,true,Bengali,BGD +95.1,false,Bajan,BRB +59.2,true,Dutch,BEL +50.8,true,English,BLZ +39.8,false,Fon,BEN +100,true,English,BMU +50,true,Dzongkha,BTN +87.7,true,Spanish,BOL +99.2,true,Serbo-Croatian,BIH +75.5,false,Tswana,BWA +97.5,true,Portuguese,BRA +97.3,true,English,GBR +0,true,English,VGB +45.5,true,Malay,BRN +83.2,true,Bulgariana,BGR +50.2,false,Mossi,BFA +98.1,true,Kirundi,BDI +0,true,English,CYM +89.7,true,Spanish,CHL +0,true,Maori,COK +97.5,true,Spanish,CRI +43.9,false,Somali,DJI +100,false,Creole English,DMA +98,true,Spanish,DOM +93,true,Spanish,ECU +98.8,true,Arabic,EGY +100,true,Spanish,SLV +49.1,true,Tigrinja,ERI +74.4,true,Spanish,ESP +22.7,true,Zulu,ZAF +31,false,Oromo,ETH +0,true,English,FLK +50.8,true,Fijian,FJI +29.3,true,Pilipino,PHL +100,true,Faroese,FRO +35.8,false,Fang,GAB +34.1,false,Malinke,GMB +71.7,true,Georgiana,GEO +52.4,false,Akan,GHA +88.9,true,English,GIB +100,false,Creole English,GRD +87.5,true,Greenlandic,GRL +95,false,Creole French,GLP +37.5,true,English,GUM +64.7,true,Spanish,GTM +38.6,false,Ful,GIN +36.4,false,Crioulo,GNB +96.4,false,Creole English,GUY +100,false,Haiti Creole,HTI +97.2,true,Spanish,HND +88.7,false,Canton Chinese,HKG +0,true,Norwegian,SJM +39.4,false,Javanese,IDN +39.9,true,Hindi,IND +77.2,true,Arabic,IRQ +45.7,true,Persian,IRN +98.4,true,English,IRL +95.7,true,Icelandic,ISL +63.1,true,Hebrew,ISR +94.1,true,Italian,ITA +0,false,Sunda,TMP +92,true,German,AUT +94.2,false,Creole English,JAM +99.1,true,Japanese,JPN +99.6,true,Arabic,YEM +97.9,true,Arabic,JOR +0,false,Chinese,CXR +75.2,true,Serbo-Croatian,YUG +88.6,true,Khmer,KHM +19.7,false,Fang,CMR +60.4,true,English,CAN +100,false,Crioulo,CPV +46,true,Kazakh,KAZ +20.9,false,Kikuyu,KEN +23.8,false,Gbaya,CAF +92,true,Chinese,CHN +59.7,true,Kirgiz,KGZ +98.9,true,Kiribati,KIR +99,true,Spanish,COL +75,true,Comorian,COM +51.5,false,Kongo,COG +18,false,Luba,COD diff --git a/TestAlgDeployment/DatabasesResourcesManagerAlgorithms-1.0.0-SNAPSHOT.jar b/TestAlgDeployment/DatabasesResourcesManagerAlgorithms-1.0.0-SNAPSHOT.jar new file mode 100644 index 0000000..5c3a4fc Binary files /dev/null and b/TestAlgDeployment/DatabasesResourcesManagerAlgorithms-1.0.0-SNAPSHOT.jar differ diff --git a/TestAlgDeployment/TestAlg.jar b/TestAlgDeployment/TestAlg.jar new file mode 100644 index 0000000..7ab9c6c Binary files /dev/null and b/TestAlgDeployment/TestAlg.jar differ diff --git a/TestAlgDeployment/TestAlg.properties b/TestAlgDeployment/TestAlg.properties new file mode 100644 index 0000000..cbc0334 --- /dev/null +++ b/TestAlgDeployment/TestAlg.properties @@ -0,0 +1 @@ +TEST_ALGORITHM=org.gcube.test.algorithm.SimpleAlg diff --git a/cfg/ALog.properties b/cfg/ALog.properties new file mode 100644 index 0000000..41feb3e --- /dev/null +++ b/cfg/ALog.properties @@ -0,0 +1,30 @@ +#### Use two appenders, one to log to console, another to log to a file +log4j.rootCategory= R + +#### First appender writes to console +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %p %t %c - %m%n +#log4j.appender.stdout.layout.ConversionPattern=%m%n +#log4j.appender.stdout.File=Analysis.log + +#### Second appender writes to a file +log4j.logger.AnalysisLogger=trace, stdout,R +log4j.appender.R=org.apache.log4j.RollingFileAppender +log4j.appender.R.File=Analysis.log +log4j.appender.R.MaxFileSize=50000KB +log4j.appender.R.MaxBackupIndex=2 +log4j.appender.R.layout=org.apache.log4j.PatternLayout +log4j.appender.R.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %p %t %c - %m%n +#log4j.appender.R.layout.ConversionPattern=%m%n + +#### Third appender writes to a file +log4j.logger.org.hibernate=H +#log4j.appender.H=org.apache.log4j.RollingFileAppender +log4j.appender.H=org.apache.log4j.AsyncAppender +#log4j.appender.H.File=HibernateLog.log +#log4j.appender.H.MaxFileSize=1024KB +#log4j.appender.H.MaxBackupIndex=2 +log4j.appender.H.layout=org.apache.log4j.PatternLayout +log4j.appender.H.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %p %t %c - %m%n + diff --git a/cfg/DestinationDBHibernate.cfg.xml b/cfg/DestinationDBHibernate.cfg.xml new file mode 100644 index 0000000..47a0416 --- /dev/null +++ b/cfg/DestinationDBHibernate.cfg.xml @@ -0,0 +1,23 @@ + + + + org.postgresql.Driver + org.hibernate.connection.C3P0ConnectionProvider + + + jdbc:postgresql://obis2.i-marine.research-infrastructures.eu:5432/obis + gcube --> + d4science2 + 1 + org.hibernate.dialect.PostgreSQLDialect + org.hibernate.transaction.JDBCTransactionFactory + + 1 + 0 + 1 + + 1 + thread + + + \ No newline at end of file diff --git a/cfg/DestinationDBHibernateDBManager.cfg.xml b/cfg/DestinationDBHibernateDBManager.cfg.xml new file mode 100644 index 0000000..8b2db9e --- /dev/null +++ b/cfg/DestinationDBHibernateDBManager.cfg.xml @@ -0,0 +1,20 @@ + + + + com.mysql.jdbc.Driver + org.hibernate.connection.C3P0ConnectionProvider + jdbc:mysql://146.48.87.169/timeseries + root + test + org.hibernate.dialect.MySQLDialect + org.hibernate.transaction.JDBCTransactionFactory + 0 + 0 + 1 + 1 + 0 + 1 + thread + + + diff --git a/cfg/QueryResult.txt b/cfg/QueryResult.txt new file mode 100644 index 0000000..77b4049 --- /dev/null +++ b/cfg/QueryResult.txt @@ -0,0 +1,3 @@ +1,AFD-Pul-1838,pinhead spot,English,USA,52836,7,0 +16,Alg-111,Piedra de mar,Spanish,Spain,52834,7,0 +17,Alg-111,Pierre vermiculée,French,France,52834,7,0 diff --git a/cfg/RandomSampleOnTable.txt b/cfg/RandomSampleOnTable.txt new file mode 100644 index 0000000..e69de29 diff --git a/cfg/SampleOnTable.txt b/cfg/SampleOnTable.txt new file mode 100644 index 0000000..821689e --- /dev/null +++ b/cfg/SampleOnTable.txt @@ -0,0 +1,680 @@ +9.7703E-7,0.00563891 +1.4364E-4,0.0510053 +4.19937E-5,0.0279353 +2.17743E-5,0.0185856 +1.944E-4,0.0632979 +3.44589E-6,0.00799436 +4.25587E-6,0.00841894 +4.78409E-6,0.0109983 +6.89079E-5,0.0364259 +4.13036E-4,0.121509 +2.31896E-5,0.0191968 +1.1745E-5,0.0180833 +2.35434E-5,0.0207482 +1.59746E-4,0.0812034 +7.69376E-5,0.0567212 +1.33776E-5,0.0141317 +1.55566E-5,0.0205317 +3.68715E-4,0.116281 +31.0365,22.4365 +4.9397E-6,0.00880015 +1.60402E-5,0.0176136 +20.0,18 +0.0152733,1.36372 +2.79727E-4,0.17039 +1.38851E-5,0.0161386 +3.36371,19.7354 +1.00472E-5,0.0129909 +7.62046E-4,0.18213 +6.13964E-5,0.0296894 +8.63237E-6,0.0123222 +9.45758E-6,0.0129748 +7.65775E-6,0.0104123 +0.333088,8.76726 +5.47461E-6,0.0114068 +2.10634E-4,0.0661339 +0.00120054,0.61099 +2.35178E-6,0.00580937 +7.06851E-4,0.137094 +3.63206E-6,0.00796127 +12.6305,36.8429 +9.10321E-6,0.0126034 +1.5285E-5,0.0157055 +4.69194E-6,0.0085918 +9.4151E-4,0.189438 +1.00963E-5,0.015446 +13.407,107.25 +2.32949E-5,0.0252971 +4.81072E-6,0.0110336 +1.38707E-5,0.0180138 +46.125,29.5 +7.68974E-5,0.0447466 +7.74824E-6,0.0104459 +6.3402E-6,0.0098905 +1.04955E-5,0.0152612 +1.17834E-4,0.0500829 +3.40577E-6,0.00804342 +4.81313E-6,0.0109715 +4.8783E-6,0.00874993 +5.67719E-6,0.0114547 +0.0011657,0.183435 +6.38817E-6,0.00985259 +5.2251E-5,0.0386048 +8.08833E-6,0.012186 +2.0055E-6,0.00529332 +1.67406E-5,0.0170766 +7.32496E-6,0.0117775 +4.98469E-4,0.102785 +4.21296E-6,0.0108077 +0.00144765,0.234982 +7.00299E-6,0.0121675 +1.59803E-5,0.0157567 +1.43714E-5,0.0188496 +1.65039E-4,0.05943 +3.16313E-5,0.0224181 +5.73683E-6,0.0111805 +4.93268E-6,0.00879117 +1.37418E-5,0.0182006 +5.61506E-6,0.011055 +3.57414E-5,0.0348078 +23.0204,48.8665 +5.18973E-5,0.0365254 +1.52769E-5,0.0162869 +1.87537E-5,0.0195511 +1.05333E-5,0.0121601 +5.4302E-6,0.0112553 +8.63725E-6,0.0182325 +1.09125E-5,0.0153535 +1.63658E-5,0.0169236 +2.78859E-5,0.0256243 +6.21926E-6,0.0111308 +1.0126E-4,0.042484 +4.62966E-4,0.180625 +6.32661E-6,0.00981543 +1.52606E-4,0.0517762 +2.12023E-5,0.0172204 +20.0,18 +3.74942E-5,0.0295507 +2.05478E-5,0.0219105 +7.66321E-6,0.0146046 +1.30299E-4,0.0465436 +2.71046E-5,0.0252701 +5.25587E-6,0.0111208 +1.51102E-5,0.0167551 +2.39602E-5,0.0219328 +2.12038E-4,0.063825 +9.0321E-6,0.0127005 +0.00137113,0.340533 +0.00331001,0.865211 +0.0249418,2.59526 +3.4304E-6,0.00801633 +6.51167E-6,0.0115893 +25.8366,33.9156 +9.11521E-6,0.0173653 +1.0255E-5,0.0119973 +7.2849E-6,0.0103475 +6.98957E-6,0.0142729 +1.9099E-4,0.0885071 +2.58334E-5,0.0229562 +7.2885E-6,0.0145269 +6.1871E-6,0.00975862 +1.46131E-5,0.0168372 +1.35135E-5,0.0147707 +2.84612E-5,0.0244796 +5.57003E-6,0.0109714 +1.1586E-4,0.0596005 +1.43117E-5,0.016303 +2.83717E-4,0.0676009 +3.46651E-5,0.0325543 +1.3657E-4,0.0479645 +6.32937E-5,0.0364656 +4.90611E-6,0.0110709 +3.19951E-5,0.0230177 +6.50331E-5,0.0408002 +5.68722E-6,0.0110757 +1.06169E-4,0.0539417 +7.59937E-6,0.0103364 +6.62968E-6,0.00974917 +7.91608E-5,0.0461142 +1.47453E-5,0.0188568 +2.5939E-7,0.00330998 +1.15728E-4,0.102883 +3.49181E-5,0.0248281 +1.37263E-4,0.0675856 +6.22479E-6,0.00976885 +3.99077E-5,0.0264196 +2.65142E-5,0.020737 +3.88691E-6,0.00890433 +1.43979E-5,0.0151321 +1.62729E-5,0.0167599 +5.14887E-5,0.0368274 +1.0498E-4,0.0706319 +2.97793E-4,0.0834792 +5.48516E-6,0.010986 +5.393E-8,0.00204208 +3.82439E-5,0.0264744 +4.12254E-5,0.0303821 +8.63469E-5,0.0507739 +8.80536E-6,0.0115935 +7.98975E-5,0.0650532 +8.81541E-6,0.012471 +2.74345E-5,0.0269974 +1.65052E-5,0.0193822 +4.29089E-6,0.0106643 +1.55832E-5,0.0191981 +20.0,18 +0.00120422,0.163573 +41.2624,61.4094 +1.12162E-4,0.0514486 +6.26934E-6,0.00976265 +2.87747E-6,0.0107453 +5.67042E-6,0.0111357 +1.15193E-5,0.0152805 +4.94424E-6,0.00917829 +7.22401E-6,0.0117199 +9.5606E-7,0.00466656 +4.90297E-6,0.00878456 +5.60354E-6,0.0112022 +1.73893E-5,0.0247408 +1.26203E-4,0.0684286 +10.5093,17.6008 +7.54061E-6,0.0103009 +6.33218E-5,0.0396868 +1.64273E-5,0.0169376 +1.5592E-4,0.0567286 +38.4655,106.582 +7.15368E-6,0.0114791 +6.90115E-5,0.042822 +3.93766E-4,0.117894 +1.17915E-5,0.0156303 +15.2436,31.9661 +1.63266E-5,0.0185158 +1.52654E-4,0.0571452 +2.55482E-5,0.0246063 +2.02187E-5,0.0196909 +4.91042E-6,0.00916803 +6.08298E-6,0.00959011 +4.86997E-6,0.00873849 +9.70018E-6,0.0150352 +4.11043E-5,0.0310217 +6.79588E-6,0.0119992 +4.04501E-6,0.0104922 +1.53992E-5,0.0148827 +6.72016E-5,0.0365898 +27.2604,53.1083 +9.51526E-5,0.0424098 +1.96001E-4,0.072912 +2.22597E-5,0.0204549 +4.09066E-6,0.0109499 +4.93808E-6,0.00882365 +1.1038E-4,0.0522993 +1.03582E-5,0.0120528 +1.33266E-5,0.0185396 +2.49224E-4,0.12057 +6.28562E-6,0.0111544 +5.48005E-6,0.013855 +5.39748E-5,0.043773 +7.35521E-6,0.0117967 +1.39825E-4,0.0454189 +5.58352E-5,0.0321382 +5.59136E-6,0.0110979 +8.84707E-5,0.036729 +3.03348E-5,0.0216452 +2.78348E-5,0.0214809 +8.949E-5,0.0524961 +1.42036E-5,0.0185446 +6.88417E-6,0.0120961 +8.78723E-6,0.0123838 +32.0,24 +9.72656E-6,0.0153021 +5.14264E-4,0.118109 +4.29736E-4,0.124482 +4.80843E-6,0.0111309 +0.00746446,0.79918 +2.3214E-5,0.0209326 +7.0459E-5,0.0355598 +3.43171E-6,0.00807386 +7.0591E-5,0.0487308 +7.76933E-6,0.0120165 +2.88501E-5,0.0243687 +7.24E-5,0.040359 +7.55489E-5,0.0469141 +1.56898E-4,0.0632761 +1.09235E-5,0.0124049 +4.05651E-5,0.042648 +1.51465E-5,0.0154193 +1.78831E-5,0.0203524 +1.51837E-5,0.0156147 +7.24739E-6,0.0117771 +1.64521E-4,0.0643537 +1.00094E-5,0.0149554 +4.64507E-6,0.00863177 +6.99993E-6,0.0115393 +3.76117E-5,0.030985 +7.7686E-6,0.014735 +8.01623E-5,0.0413427 +1.1339E-5,0.0133611 +4.87665E-6,0.00874776 +1.51463E-4,0.0628629 +6.31441E-6,0.0114204 +1.77934E-5,0.0168571 +0.990086,6.94953 +3.46749E-6,0.00799544 +3.54416E-5,0.0322305 +1.45402E-5,0.0146951 +3.40148E-5,0.0245084 +1.97484E-5,0.0196968 +3.87369E-5,0.0247396 +5.70696E-6,0.0111178 +99.2602,175.239 +1.29631E-5,0.014126 +10.2418,50.4454 +1.09268E-5,0.0152518 +12.2007,20.3949 +6.87815E-5,0.0532574 +8.57708E-4,0.125572 +2.15802E-4,0.105642 +4.796E-6,0.00870184 +5.71075E-6,0.0110694 +1.53091E-5,0.0187159 +1.26111E-5,0.0140716 +1.76523E-5,0.0171751 +2.6124E-5,0.0256958 +7.23155E-5,0.035976 +5.77085E-5,0.030605 +2.07301E-5,0.024814 +7.63905E-5,0.0381513 +0.00503634,0.3736 +2.13352E-5,0.0201323 +2.14379E-4,0.0765103 +1.29366E-4,0.0653318 +4.81075E-6,0.0087364 +1.2456E-5,0.0157668 +4.72969E-6,0.00877609 +9.5267E-6,0.0130738 +2.70645E-5,0.0233318 +4.12543E-4,0.121654 +2.28287E-5,0.0245126 +6.65116E-6,0.0117262 +1.03708E-5,0.0120501 +5.11625E-5,0.0310841 +8.50127E-6,0.0112504 +3.39338E-5,0.0252766 +2.3338E-4,0.0896917 +4.36054E-4,0.102802 +1.0299E-5,0.013153 +3.64824E-6,0.0072728 +8.7311E-6,0.0124873 +4.99389E-6,0.00883864 +3.01524E-5,0.0221235 +1.43308E-5,0.0185584 +0.0135375,1.15703 +4.23928E-5,0.0315665 +7.87581E-6,0.014493 +2.37326E-5,0.0250884 +2.33263E-5,0.0210637 +6.5444E-5,0.0333008 +1.24917E-5,0.0148961 +2.5057E-5,0.0258766 +7.99923E-5,0.0392109 +6.7407E-7,0.00370689 +1.64934E-5,0.0156925 +7.34689E-6,0.0117761 +1.10116E-5,0.0155375 +3.49003E-5,0.0240023 +4.79389E-5,0.0336569 +5.57741E-6,0.0111047 +3.36945E-5,0.0233381 +7.64675E-6,0.010386 +0.00799724,0.659073 +6.71526E-5,0.0344918 +3.96247E-5,0.0253391 +2.47065E-4,0.0686088 +9.36907E-5,0.042208 +1.94518E-4,0.11588 +4.81752E-6,0.0109983 +0.00100041,0.179554 +4.82336E-6,0.00871537 +3.26412E-4,0.101085 +2.01583E-5,0.0202071 +4.58397E-4,0.0947255 +1.23653E-5,0.0160874 +5.32341E-6,0.0117989 +4.30236,13.4722 +1.96971E-5,0.0183275 +2.09065E-4,0.0598918 +0.0028134,0.359766 +4.87499E-4,0.105899 +4.89188E-5,0.0320554 +4.81601E-6,0.00869791 +4.72743E-6,0.00900802 +7.07032E-4,0.215604 +3.35413E-4,0.078974 +2.72193E-5,0.0288247 +1.05278E-4,0.0590045 +5.48046E-6,0.0113265 +7.62165E-5,0.0417477 +1.23731E-5,0.015662 +1.49468E-5,0.024292 +3.48717E-5,0.0348614 +0.0164454,0.67151 +1.7237E-4,0.0548759 +4.66219E-6,0.00863206 +7.299E-8,0.00174579 +2.00278E-5,0.0187269 +0.00899511,0.602984 +6.2523E-6,0.00976894 +8.42477E-4,0.161537 +3.62395E-6,0.00984839 +1.04946E-4,0.0435103 +6.53428,37.7425 +1.39836E-5,0.0147882 +4.75411E-4,0.102706 +6.92834E-6,0.0124173 +36.908,29.2145 +3.17329E-5,0.0321644 +4.80431E-6,0.0087475 +4.70384E-6,0.00854259 +8.21236E-5,0.0480911 +3.49175E-5,0.0260483 +1.94338E-5,0.0173099 +5.64119E-5,0.0403665 +3.33142E-5,0.025431 +3.13217E-5,0.0234571 +7.02198E-5,0.0343343 +7.3128E-7,0.00380925 +4.78409E-6,0.0109895 +5.22142E-6,0.00839373 +1.32269E-5,0.0195893 +4.29958E-6,0.0114484 +9.91712E-6,0.0149054 +5.07431,29.0843 +2.51492E-4,0.0943709 +6.32571E-6,0.00984089 +6.90728E-5,0.046415 +2.93913E-5,0.0214902 +2.31863E-5,0.0183523 +3.47137E-6,0.00809219 +3.3656E-6,0.00790383 +4.73489E-5,0.0314832 +8.05622E-5,0.0354184 +4.74366E-6,0.00861308 +16.7146,47.4161 +3.51564E-6,0.00806651 +8.33728E-5,0.0630348 +4.30414E-5,0.0257771 +7.08169E-6,0.0121962 +1.94905E-5,0.017493 +6.39635E-5,0.0425276 +1.14504E-5,0.0135943 +62.4943,42.9971 +1.9094E-5,0.0207893 +2.76009E-5,0.0207111 +0.0010282,0.204352 +2.8121E-6,0.00956001 +8.52094E-6,0.0124186 +2.35137E-4,0.0780883 +1.07303E-4,0.0715886 +8.19546E-6,0.0120523 +2.738E-5,0.0253871 +2.82366E-4,0.102415 +7.63725E-6,0.0103654 +2.3305E-4,0.0980442 +8.84575E-5,0.0414556 +1.46621E-5,0.0183132 +0.00185081,0.266569 +1.61395E-6,0.00704063 +7.20101E-4,0.130395 +1.60633E-5,0.0169116 +8.33848E-4,0.14828 +6.05287E-4,0.119328 +7.37463E-6,0.0102347 +6.90496E-6,0.0114783 +0.00762325,0.5351 +1.06799E-5,0.0181149 +2.26395E-5,0.0190986 +2.84254E-6,0.0106435 +2.60988E-5,0.0277546 +9.38991E-6,0.014974 +1.20928E-5,0.0152344 +1.18972E-5,0.0162437 +1.04221E-4,0.0434984 +4.62954E-5,0.0304854 +9.29013E-5,0.0450334 +6.38068E-6,0.00986119 +8.70063E-6,0.0123836 +5.47485E-5,0.0343837 +1.90552E-4,0.0596715 +1.60205E-4,0.0605616 +4.83028E-6,0.00870924 +1.63153E-5,0.0168672 +1.0141E-5,0.0130523 +1.85877E-5,0.022111 +3.73099E-5,0.0293874 +1.20618E-5,0.0141322 +4.80132E-4,0.239321 +1.86734E-5,0.0183217 +2.15333E-6,0.00704786 +2.8177E-7,0.00764778 +1.19829E-4,0.0600073 +2.11027E-4,0.0624342 +4.15023E-5,0.0404231 +6.3142E-5,0.0475227 +7.01177E-5,0.0324059 +3.50275E-5,0.0277303 +3.76439E-6,0.00804053 +4.16921E-6,0.0106673 +7.86189E-6,0.0148531 +1.17702E-5,0.0140042 +2.07788E-6,0.00710602 +7.33329E-6,0.0117783 +0.00185396,0.334392 +1.45967E-5,0.0152665 +1.89768E-5,0.0220377 +6.33974E-6,0.00988845 +3.24418E-4,0.101348 +8.90444E-6,0.0126817 +2.90857E-5,0.0345513 +5.68757E-6,0.00918417 +0.00709752,0.577801 +1.44068E-4,0.0630899 +4.7697E-6,0.00871275 +1.24975E-5,0.013882 +14.3761,15.9211 +2.99573E-4,0.0790785 +3.90447E-5,0.0277512 +1.04486E-5,0.0120927 +7.32497E-5,0.0474162 +0.0328583,1.68561 +1.25832E-5,0.0169329 +6.05401E-6,0.00966575 +0.8522,7.41662 +2.9527E-5,0.0232313 +2.05127E-6,0.00704115 +6.69359E-6,0.0142841 +3.62366E-5,0.0249559 +2.28879E-5,0.0194495 +6.56421E-5,0.0413058 +2.35693E-5,0.0193053 +1.90307E-5,0.0178288 +1.00153E-5,0.018204 +2.57921E-5,0.0256418 +20.0,18 +4.8505E-6,0.0109678 +5.61072E-6,0.0114127 +4.7754E-5,0.0301519 +2.42677E-5,0.0232316 +1.89188E-5,0.0208227 +6.61769E-4,0.167716 +2.97141E-5,0.0223764 +1.14063E-4,0.0447234 +9.09487E-5,0.0446335 +4.67532E-5,0.0283271 +5.84188E-4,0.12433 +2.28362E-5,0.0251913 +4.84907E-5,0.0308274 +1.11794E-5,0.0137001 +27.0718,51.0763 +1.08003E-4,0.0454306 +9.38431E-6,0.0129279 +2.04809E-6,0.0070513 +3.12931E-5,0.028814 +0.00189977,0.285349 +1.20323E-5,0.0145518 +6.43857E-6,0.0115764 +9.13355E-6,0.0175894 +1.13331E-5,0.0144328 +0.00112667,0.202879 +1.13165E-5,0.0142628 +2.8717E-5,0.0212844 +4.96852E-4,0.131825 +13.4408,74.2049 +1.95355E-4,0.0738632 +8.48093E-5,0.0387794 +8.52129E-6,0.0121269 +5.15058E-5,0.031754 +3.37542E-5,0.0249784 +1.31215E-5,0.0153912 +2.96757E-4,0.134141 +4.9007E-5,0.0298154 +4.18864E-5,0.0305646 +2.08578E-6,0.00538811 +0.0146687,2.34031 +2.59284E-4,0.0825437 +1.03252E-4,0.0543814 +90.6332,103.019 +5.12688E-5,0.0414163 +8.2902E-7,0.00603566 +3.18194E-6,0.00689977 +8.55502E-5,0.0364648 +4.8763E-6,0.00877332 +3.54058E-6,0.00809896 +1.38108E-6,0.00813992 +1.90862E-5,0.0175106 +4.88955E-6,0.00911519 +15.7244,17.2081 +4.99868E-6,0.0108084 +0.00539245,0.624264 +1.69463E-4,0.0630869 +0.00259102,0.888393 +8.39712E-5,0.0435661 +4.73652E-6,0.010929 +7.24351E-6,0.0116926 +13.419,30.2048 +1.11495E-4,0.0497078 +6.18346E-6,0.00972724 +6.87393E-6,0.0114111 +1.79846E-5,0.0175689 +4.57238E-5,0.0356232 +8.10548E-4,0.140009 +2.99394E-4,0.0757078 +2.45417E-5,0.019924 +5.04439E-6,0.00884144 +5.42362E-6,0.0110175 +2.20127E-5,0.0267511 +9.94813E-5,0.0508959 +1.25062,17.9565 +1.61344E-4,0.0625028 +0.00112262,0.229034 +1.04855E-5,0.0131256 +0.00125686,0.210136 +5.17521,33.5174 +4.7696E-6,0.00858219 +3.081E-8,0.00359469 +1.08837E-5,0.0146307 +1.16904E-4,0.0594755 +1.20467E-4,0.0768319 +1.45649E-5,0.0152501 +9.76951E-4,0.208879 +2.26888E-5,0.0188056 +1.72038E-5,0.0213398 +9.7678E-7,0.00611272 +5.10934E-6,0.00847851 +4.94181E-6,0.00884812 +6.06736E-6,0.00963022 +4.22465E-4,0.106611 +5.61754E-6,0.011148 +0.0189674,1.07685 +6.30447E-6,0.00967734 +0.63882,14.4948 +1.05014E-5,0.0152593 +3.78932E-5,0.0276698 +1.12453E-5,0.0155788 +5.50268E-6,0.0113421 +6.01866E-6,0.00979631 +9.59838E-6,0.0128491 +4.78663E-4,0.120393 +1.80902E-4,0.0679503 +3.50241E-6,0.00803909 +1.59405E-5,0.016117 +3.68681E-5,0.0332498 +1.06166E-5,0.0129311 +8.03002E-6,0.0121394 +6.56986E-6,0.0116726 +6.12983E-6,0.00961705 +11.0619,36.9611 +1.19807E-4,0.052702 +2.12194E-5,0.0225268 +8.16354E-6,0.012526 +12.5088,23.2871 +6.63737E-6,0.011786 +8.69258E-6,0.0123714 +4.05835E-5,0.0308466 +6.67081E-6,0.0117398 +1.22291E-4,0.0549408 +5.35365E-5,0.037192 +9.66958E-4,0.234486 +6.06076E-6,0.00968083 +5.31188E-6,0.0110805 +4.54449E-6,0.00877477 +7.30305E-6,0.0120953 +2.96538E-4,0.0964961 +2.66118E-5,0.0226364 +1.95749E-5,0.0201733 +5.43957E-5,0.0283473 +2.10492E-6,0.00694118 +3.22508E-5,0.0245779 +4.93528E-6,0.00873575 +8.70525E-5,0.03822 +1.95783E-5,0.0203246 +4.83264E-6,0.0090926 +7.3687E-4,0.200016 +1.4543E-5,0.0148591 +6.35245E-6,0.00988494 +5.644E-7,0.00566877 +3.38921E-6,0.00804852 +1.22734E-4,0.0534114 +1.16764E-5,0.0140771 +5.72278E-5,0.029283 +2.69315E-4,0.0838663 +6.55163E-5,0.0582305 +8.29973E-6,0.012344 +6.14166E-5,0.0414622 +2.56287E-5,0.0206759 +4.83934E-6,0.011014 +1.62917E-5,0.0188659 +1.06344E-5,0.0127406 +6.25899E-6,0.00976509 +1.3609E-5,0.0191601 +3.55264E-5,0.0284813 +3.06702E-5,0.0236348 +45.5391,106.753 +1.04514E-5,0.01559 +4.62526E-5,0.0378597 +1.603E-7,0.00442308 +1.80651E-4,0.0792493 +2.81819E-5,0.0230531 +4.54264E-6,0.0108184 +1.25729E-5,0.0140746 +5.36799E-5,0.0301957 +1.15805E-5,0.0135475 +5.02222E-6,0.00877333 +8.41231E-5,0.0403267 +2.04203E-4,0.113848 +5.58337E-6,0.011363 +7.66205E-6,0.0104025 +3.27681E-6,0.00702314 +1.34649E-5,0.0184943 +1.03667E-5,0.0120576 +8.71444E-6,0.0124203 +3.57407E-5,0.0414939 diff --git a/cfg/SmartSampleOnTable.txt b/cfg/SmartSampleOnTable.txt new file mode 100644 index 0000000..e69de29 diff --git a/cfg/algorithms.properties b/cfg/algorithms.properties new file mode 100644 index 0000000..9fcf228 --- /dev/null +++ b/cfg/algorithms.properties @@ -0,0 +1,7 @@ +AQUAMAPS_SUITABLE=org.gcube.dataanalysis.ecoengine.spatialdistributions.AquamapsSuitable +AQUAMAPS_NATIVE=org.gcube.dataanalysis.ecoengine.spatialdistributions.AquamapsNative +AQUAMAPS_NATIVE_2050=org.gcube.dataanalysis.ecoengine.spatialdistributions.AquamapsNative2050 +AQUAMAPS_SUITABLE_2050=org.gcube.dataanalysis.ecoengine.spatialdistributions.AquamapsSuitable2050 +AQUAMAPS_NATIVE_NEURALNETWORK=org.gcube.dataanalysis.ecoengine.spatialdistributions.AquamapsNN +AQUAMAPS_SUITABLE_NEURALNETWORK=org.gcube.dataanalysis.ecoengine.spatialdistributions.AquamapsNNSuitable +FEED_FORWARD_A_N_N_DISTRIBUTION=org.gcube.dataanalysis.ecoengine.spatialdistributions.FeedForwardNeuralNetworkDistribution \ No newline at end of file diff --git a/cfg/clusterers.properties b/cfg/clusterers.properties new file mode 100644 index 0000000..c2801e9 --- /dev/null +++ b/cfg/clusterers.properties @@ -0,0 +1,3 @@ +DBSCAN=org.gcube.dataanalysis.ecoengine.clustering.DBScan +KMEANS=org.gcube.dataanalysis.ecoengine.clustering.KMeans +XMEANS=org.gcube.dataanalysis.ecoengine.clustering.XMeansWrapper \ No newline at end of file diff --git a/cfg/dynamictransducerers.properties b/cfg/dynamictransducerers.properties new file mode 100644 index 0000000..e69de29 diff --git a/cfg/evaluators.properties b/cfg/evaluators.properties new file mode 100644 index 0000000..1245533 --- /dev/null +++ b/cfg/evaluators.properties @@ -0,0 +1,3 @@ +DISCREPANCY_ANALYSIS=org.gcube.dataanalysis.ecoengine.evaluation.DiscrepancyAnalysis +QUALITY_ANALYSIS=org.gcube.dataanalysis.ecoengine.evaluation.DistributionQualityAnalysis +HRS=org.gcube.dataanalysis.ecoengine.evaluation.HabitatRepresentativeness \ No newline at end of file diff --git a/cfg/generators.properties b/cfg/generators.properties new file mode 100644 index 0000000..4efd8af --- /dev/null +++ b/cfg/generators.properties @@ -0,0 +1,2 @@ +LOCAL_WITH_DATABASE=org.gcube.dataanalysis.ecoengine.processing.LocalSplitGenerator +SIMPLE_LOCAL=org.gcube.dataanalysis.ecoengine.processing.LocalSimpleSplitGenerator diff --git a/cfg/loredana.txt b/cfg/loredana.txt new file mode 100644 index 0000000..e69de29 diff --git a/cfg/modelers.properties b/cfg/modelers.properties new file mode 100644 index 0000000..d5c652e --- /dev/null +++ b/cfg/modelers.properties @@ -0,0 +1 @@ +HSPEN_MODELER=org.gcube.dataanalysis.ecoengine.modeling.SimpleModeler \ No newline at end of file diff --git a/cfg/models.properties b/cfg/models.properties new file mode 100644 index 0000000..479b406 --- /dev/null +++ b/cfg/models.properties @@ -0,0 +1,4 @@ +HSPEN=org.gcube.dataanalysis.ecoengine.models.ModelHSPEN +AQUAMAPSNN=org.gcube.dataanalysis.ecoengine.models.ModelAquamapsNN +FEED_FORWARD_ANN=org.gcube.dataanalysis.ecoengine.models.FeedForwardNN +FEED_FORWARD_ANN_FILE=org.gcube.dataanalysis.ecoengine.models.testing.FeedForwardNNFile \ No newline at end of file diff --git a/cfg/nodealgorithms.properties b/cfg/nodealgorithms.properties new file mode 100644 index 0000000..4493d3b --- /dev/null +++ b/cfg/nodealgorithms.properties @@ -0,0 +1 @@ +AQUAMAPS_SUITABLE=org.gcube.dataanalysis.peeng.models.AquamapsSuitableNode diff --git a/cfg/operators.xml b/cfg/operators.xml new file mode 100644 index 0000000..93b465c --- /dev/null +++ b/cfg/operators.xml @@ -0,0 +1,2620 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cfg/results.csv b/cfg/results.csv new file mode 100644 index 0000000..00aa4aa --- /dev/null +++ b/cfg/results.csv @@ -0,0 +1 @@ +1,2.87747E-6,2,1.603E-7,3,2.84254E-6,4,1.06799E-5,5,8.2902E-7,6,9.5606E-7,7,12.5088,8,2.8121E-6,9,3.62395E-6,10,15.2436,11,27.0718,12,62.4943,13,27.2604,14,38.4655,15,0.00185396,16,8.42477E-4,17,0.00539245,18,5.84188E-4,19,1.00963E-5,20,1.65052E-5,21,4.22465E-4,22,4.83264E-6,23,2.82366E-4,24,3.37542E-5,25,2.26395E-5,26,1.51102E-5,27,9.59838E-6,28,3.44589E-6,29,1.96001E-4,30,4.7696E-6, \ No newline at end of file diff --git a/cfg/results.txt b/cfg/results.txt new file mode 100644 index 0000000..e69de29 diff --git a/cfg/transducerers.properties b/cfg/transducerers.properties new file mode 100644 index 0000000..0ac5ff4 --- /dev/null +++ b/cfg/transducerers.properties @@ -0,0 +1,25 @@ +ABSENCE_CELLS_FROM_AQUAMAPS=org.gcube.dataanalysis.ecoengine.transducers.simplequeryexecutors.MarineAbsencePointsFromAquamapsDistribution +BIOCLIMATE_HSPEC=org.gcube.dataanalysis.ecoengine.transducers.BioClimateHSPECTransducer +BIOCLIMATE_HCAF=org.gcube.dataanalysis.ecoengine.transducers.BioClimateHCAFTransducer +BIOCLIMATE_HSPEN=org.gcube.dataanalysis.ecoengine.transducers.BioClimateHSPENTransducer +HCAF_INTERPOLATION=org.gcube.dataanalysis.ecoengine.transducers.InterpolationTransducer +HCAF_FILTER=org.gcube.dataanalysis.ecoengine.transducers.simplequeryexecutors.HcafFilter +HSPEN_FILTER=org.gcube.dataanalysis.ecoengine.transducers.simplequeryexecutors.HspenFilter +OCCURRENCES_MERGER=org.gcube.dataanalysis.ecoengine.transducers.OccurrencePointsMerger +OCCURRENCES_INTERSECTOR=org.gcube.dataanalysis.ecoengine.transducers.OccurrencePointsIntersector +OCCURRENCES_MARINE_TERRESTRIAL=org.gcube.dataanalysis.ecoengine.transducers.OccurrencePointsInSeaOnEarth +OCCURRENCES_DUPLICATES_DELETER=org.gcube.dataanalysis.ecoengine.transducers.OccurrencePointsDuplicatesDeleter +OCCURRENCES_SUBTRACTION=org.gcube.dataanalysis.ecoengine.transducers.OccurrencePointsSubtraction +PRESENCE_CELLS_GENERATION=org.gcube.dataanalysis.ecoengine.transducers.simplequeryexecutors.MarinePresencePoints +FIN_TAXA_MATCH=org.gcube.dataanalysis.fin.taxamatch.TaxaMatchTransducer +LISTNAMES_TABLES=org.gcube.dataacces.algorithms.DatabasesResourcesManagerAlgorithms.AbsoluteSpeciesBarChartsAlgorithm +TEST_ALG=org.gcube.dataacces.algorithms.DatabasesResourcesManagerAlgorithms.SimpleAlg +LISTDBINFO=org.gcube.dataaccess.algorithms.drmalgorithms.ListDBInfo +LISTDBNAMES=org.gcube.dataaccess.algorithms.drmalgorithms.ListNames +LISTDBSCHEMA=org.gcube.dataaccess.algorithms.drmalgorithms.ListSchemas +LISTTABLES=org.gcube.dataaccess.algorithms.drmalgorithms.ListTables +GETTABLEDETAILS=org.gcube.dataaccess.algorithms.drmalgorithms.GetTableDetails +LISTSUBMITQUERY=org.gcube.dataaccess.algorithms.drmalgorithms.SubmitQuery +SAMPLEONTABLE=org.gcube.dataaccess.algorithms.drmalgorithms.SampleOnTable +SMARTSAMPLEONTABLE=org.gcube.dataaccess.algorithms.drmalgorithms.SmartSampleOnTable +RANDOMSAMPLEONTABLE=org.gcube.dataaccess.algorithms.drmalgorithms.RandomSampleOnTable \ No newline at end of file diff --git a/cfg/userperspective.properties b/cfg/userperspective.properties new file mode 100644 index 0000000..8374202 --- /dev/null +++ b/cfg/userperspective.properties @@ -0,0 +1,12 @@ +ANOMALIES_DETECTION=DBSCAN,KMEANS,XMEANS +CLASSIFICATION=FEED_FORWARD_A_N_N_DISTRIBUTION +CLIMATE=BIOCLIMATE_HSPEC,BIOCLIMATE_HCAF,BIOCLIMATE_HSPEN,HCAF_INTERPOLATION +CORRELATION_ANALYSIS=HRS +DATA_CLUSTERING=DBSCAN,KMEANS,XMEANS +FILTERING=HCAF_FILTER,HSPEN_FILTER +FUNCTION_SIMULATION=FEED_FORWARD_A_N_N_DISTRIBUTION +OCCURRENCES=ABSENCE_CELLS_FROM_AQUAMAPS,PRESENCE_CELLS_GENERATION,OCCURRENCES_MERGER,OCCURRENCES_INTERSECTOR,OCCURRENCES_MARINE_TERRESTRIAL,OCCURRENCES_DUPLICATES_DELETER,OCCURRENCES_SUBTRACTION +PERFORMANCES_EVALUATION=QUALITY_ANALYSIS,DISCREPANCY_ANALYSIS +SPECIES_SIMULATION=AQUAMAPS_SUITABLE,AQUAMAPS_NATIVE,AQUAMAPS_NATIVE_2050,AQUAMAPS_SUITABLE_2050,AQUAMAPS_NATIVE_NEURALNETWORK,AQUAMAPS_SUITABLE_NEURALNETWORK +TRAINING=HSPEN,AQUAMAPSNN,FEED_FORWARD_ANN +TIME_SERIES=HCAF_INTERPOLATION \ No newline at end of file diff --git a/distro/CHANGELOG b/distro/CHANGELOG new file mode 100644 index 0000000..ed9cbcb --- /dev/null +++ b/distro/CHANGELOG @@ -0,0 +1,2 @@ +v. 1.0.0 (09-06-2014) + * First release \ No newline at end of file diff --git a/distro/LICENSE b/distro/LICENSE new file mode 100644 index 0000000..3695e26 --- /dev/null +++ b/distro/LICENSE @@ -0,0 +1 @@ +${gcube.license} diff --git a/distro/README b/distro/README new file mode 100644 index 0000000..e52ca57 --- /dev/null +++ b/distro/README @@ -0,0 +1,64 @@ +The gCube System - ${name} +-------------------------------------------------- + +${description} + + +${gcube.description} + +${gcube.funding} + + +Version +-------------------------------------------------- + +${version} (${buildDate}) + +Please see the file named "changelog.xml" in this directory for the release notes. + + +Authors +-------------------------------------------------- + +* Loredana Liccardo (loredana.liccardo-AT-isti.cnr.it), CNR Pisa, + Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo". + +Maintainers +----------- + +* Loredana Liccardo (loredana.liccardo-AT-isti.cnr.it), CNR Pisa, + Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo". + +Download information +-------------------------------------------------- + +Source code is available from SVN: + ${scm.url} + +Binaries can be downloaded from the gCube website: + ${gcube.website} + + +Installation +-------------------------------------------------- + +Installation documentation is available on-line in the gCube Wiki: +using please referer to INSTALL. + +Documentation +-------------------------------------------------- + +Documentation is available on-line in the gCube Wiki: + ${gcube.wikiRoot} + +Support +-------------------------------------------------- + +Bugs and support requests can be reported in the gCube issue tracking tool: + ${gcube.issueTracking} + + +Licensing +-------------------------------------------------- + +This software is licensed under the terms you may find in the file named "LICENSE" in this directory. diff --git a/distro/changelog.xml b/distro/changelog.xml new file mode 100644 index 0000000..92418f9 --- /dev/null +++ b/distro/changelog.xml @@ -0,0 +1,71 @@ + + + + algorithm SubmitQuery modified in order to pass the string + pathfile to the submitQuery method of class DatabaseManagement in + order to generate a file and retrieve it from the statistical manager + with the map as output. + + Algorithms RandomSampleOnTable, SampleOnTable, + SmartSampleOnTable and SubmitQuery modified in order to manage the + file as output. + + total number rows returned as output for the result of the + submit Query operation: algorithm SubmitQuery modified + + + + some algorithms modified to cope modifications applied in the + database-resource-manager component and regarding the management of + the same access + point for a resource and the database connection + shutdown. + + + + SubmitQuery algorithm updated because input parameters + in the + SubmitQuery method of DatabaseManagement class have been updated + + timer added in the SubmitQuery algorithm that stops the query + execution after 30 minutes + + hibernate bug fixed and related to a join tables with same + columns names. Bug resolved using JDBC. GetConnection + method changed + in the SubmitQuery algorithm to create + the connection with JDBC + + method shutdown of algorithm SubmitQuery implemented in order + to allow a user to cancel a submit query operation + + bug fixed when two algorithms are submitted concurrently.Bug + related to map result's name. Bug fixed generating the name as + ResultsMap"+UUID.randomUUID() + + classes SubmitQuery, SampleOnTable, SmartSampleOnTable, + RandomSampleOnTable modified in order to not make available the + file + as result + + file DestinationDBHibernate modified to insert the property on + the timeout + + bug fixed on table names that are keywords.Method + GetTableDetails corrected to consider the name as schema.table for + postgres and database.table for mysql + + + + first release + + + \ No newline at end of file diff --git a/distro/descriptor.xml b/distro/descriptor.xml new file mode 100644 index 0000000..dd16f0c --- /dev/null +++ b/distro/descriptor.xml @@ -0,0 +1,31 @@ + + servicearchive + + tar.gz + + / + + + ${distroDirectory} + / + true + + README + LICENSE + changelog.xml + profile.xml + + 755 + true + + + + + target/${build.finalName}.jar + /${artifactId} + + + diff --git a/distro/profile.xml b/distro/profile.xml new file mode 100644 index 0000000..0844a74 --- /dev/null +++ b/distro/profile.xml @@ -0,0 +1,25 @@ + + + + Service + + Database Resource Manager algorithms + DataAccess + ${artifactId} + 1.0.0 + + + ${artifactId} + ${version} + + ${groupId} + ${artifactId} + ${version} + + + ${build.finalName}.jar + + + + + diff --git a/log.txt b/log.txt new file mode 100644 index 0000000..357778b --- /dev/null +++ b/log.txt @@ -0,0 +1,2 @@ +0 [main] DEBUG root - Executing:test +0 [main] DEBUG root - Executing:test diff --git a/nullresults.csv b/nullresults.csv new file mode 100644 index 0000000..19f640a --- /dev/null +++ b/nullresults.csv @@ -0,0 +1,10 @@ +Xiphias gladius,135638 +Fulmarus glacialis,131885 +Thunnus albacares,124076 +Pachymetopon blochii,113597 +Aptenodytes patagonicus,112605 +Gadus morhua,101777 +Caretta caretta,101769 +Thyrsites atun,97986 +Loligo vulgaris reynaudi,96672 +Argyrozona argyrozona,96278 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d4694bc --- /dev/null +++ b/pom.xml @@ -0,0 +1,84 @@ + + + 4.0.0 + + + org.gcube.tools + maven-parent + 1.0.0 + + + org.gcube.dataaccess.algorithms + database-rm-algorithms + 1.3.0-SNAPSHOT + DatabasesResourcesManagerAlgorithms + Databases Resources Manager Algorithms + + + ${project.basedir}/distro + UTF-8 + UTF-8 + + + + + + + + + + + + + + + + + + + + org.gcube.dataaccess + database-resource-manager + [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) + + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + ${distroDirectory}/descriptor.xml + + + + + servicearchive + install + + single + + + + + + + + diff --git a/results.csv b/results.csv new file mode 100644 index 0000000..19f640a --- /dev/null +++ b/results.csv @@ -0,0 +1,10 @@ +Xiphias gladius,135638 +Fulmarus glacialis,131885 +Thunnus albacares,124076 +Pachymetopon blochii,113597 +Aptenodytes patagonicus,112605 +Gadus morhua,101777 +Caretta caretta,101769 +Thyrsites atun,97986 +Loligo vulgaris reynaudi,96672 +Argyrozona argyrozona,96278 diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/GetTableDetails.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/GetTableDetails.java new file mode 100644 index 0000000..91eda20 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/GetTableDetails.java @@ -0,0 +1,539 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.UUID; + +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataaccess.databases.access.DatabasesDiscoverer; +import org.gcube.dataaccess.databases.resources.DBResource; +import org.gcube.dataaccess.databases.utils.DatabaseManagement; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.gcube.resources.discovery.client.api.DiscoveryException; +import org.gcube.resources.discovery.client.api.InvalidResultException; +import org.hibernate.HibernateException; +import org.hibernate.SessionFactory; + +/** Class that allows to retrieve some information about the chosen table */ +public class GetTableDetails extends StandardLocalExternalAlgorithm { + + private LinkedHashMap map = new LinkedHashMap(); + // object that allows to manage some operations on a database + private DatabaseManagement mgt; + // variable that keeps track of the database's type + private String driverInfo; + + // database's parameters specified by the user + private String resourceName = null; + private String databaseName = null; + private String schemaName = null; + private String tableName = null; + + private SessionFactory sf; + + @Override + public void init() throws Exception { + + mgt = new DatabaseManagement(config.getConfigPath()); + + AnalysisLogger.getLogger().debug("In GetTableDetails->Initialization"); + + String scope = config.getGcubeScope(); + + AnalysisLogger.getLogger().debug("In GetTableDetails->scope set by config: " + scope); + +// AnalysisLogger.getLogger().debug("In TableDetails->scope set by config: " + config.getGcubeScope()); + + if (scope == null || scope.length() == 0) { + + + scope = ScopeProvider.instance.get(); + + AnalysisLogger.getLogger().debug("In GetTableDetails->scope set by ScopeProvider: " + scope); + + + } else { + + ScopeProvider.instance.set(scope); + + } + + } + + @Override + public String getDescription() { + // add a simple description for the algorithm + + return "Algorithm that allows to view table details of a chosen database"; + + } + + @Override + protected void process() throws Exception, IOException, + IllegalStateException, DiscoveryException, InvalidResultException, + HibernateException { + + AnalysisLogger.getLogger().debug("In GetTableDetails->Processing"); + + try { + + // retrieve information + List Info = retrieveInfo(); + + // create the connection + getConnection(Info); + + // get table's details + + // recover information about the "CreateTableStatement" and + // "Number of rows" of the table chosen by the user + + map = getDetails(); + + } catch (HibernateException h) { + + AnalysisLogger.getLogger().debug( + "In GetTableDetails-> ERROR " + h.getMessage()); + throw h; + } catch (IllegalStateException e) { + // e.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails-> ERROR " + e.getMessage()); + + throw e; + + } catch (DiscoveryException e1) { + // e1.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails-> ERROR " + e1.getMessage()); + + throw e1; + + } catch (InvalidResultException e2) { + // e2.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails-> ERROR " + e2.getMessage()); + + throw e2; + + } catch (IOException e3) { + // e3.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails-> Exception " + e3.getMessage()); + + throw e3; + } + + catch (Exception e4) { + // e4.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In GetTableDetails-> Exception " + e4.getMessage()); + + throw e4; + + } finally { + // close the connection + mgt.closeConnection(); + } + + } + + @Override + protected void setInputParameters() { + +// AnalysisLogger.getLogger().debug("In GetTableDetails->setting inputs"); + + // parameters specified by the user + addStringInput("ResourceName", "The name of the resource", ""); + addStringInput("DatabaseName", "The name of the database", ""); + addStringInput("SchemaName", "The name of the schema", ""); + addStringInput("TableName", "The name of the table", ""); + + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("In GetTableDetails->Shutdown"); + + } + + @Override + public StatisticalType getOutput() { + + AnalysisLogger.getLogger().debug("In GetTableDetails->retrieving outputs"); + + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(LinkedHashMap.class.getName(), + map, PrimitiveTypes.MAP, "ResultsMap"+UUID.randomUUID(), "Results Map"); + + return output; + + } + + // create the database's connection + private void getConnection(List Info) throws IOException { + + // create the connection + Iterator iterator = Info.iterator(); + + String DatabaseUserName = iterator.next(); + String DatabasePassword = iterator.next(); + String DatabaseDriver = iterator.next(); + String DatabaseDialect = iterator.next(); + String DatabaseURL = iterator.next(); + String DatabaseName = iterator.next(); + + mgt.createConnection(DatabaseUserName, + DatabasePassword, DatabaseDriver, DatabaseDialect, DatabaseURL, + DatabaseName); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->database " + DatabaseName + ": connected"); + } + + // Method that recover the info useful for the connection + private List retrieveInfo() throws Exception, + IllegalStateException, DiscoveryException, InvalidResultException { + + resourceName = getInputParameter("ResourceName"); + + if(resourceName != null){ + resourceName = getInputParameter("ResourceName").trim(); + } + + if ((resourceName == null) || (resourceName.equals(""))) { + throw new Exception("Warning: insert the resource name"); + } + + + databaseName = getInputParameter("DatabaseName"); + + if(databaseName != null){ + databaseName = getInputParameter("DatabaseName").trim(); + } + if ((databaseName == null) || (databaseName.equals(""))) { + throw new Exception("Warning: insert the database name"); + } + + // retrieve the chosen resource + DatabasesDiscoverer discovery = new DatabasesDiscoverer(); + + List resources = discovery.discover(); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->number of database resources: " + + resources.size()); + + for (int i = 0; i < resources.size(); i++) { + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->Resource's name: " + + resources.get(i).getResourceName()); + + } + + // list that contains information useful for the connection + List info = new ArrayList(); + + check: for (int i = 0; i < resources.size(); i++) { + + if (resources.get(i).getResourceName().toLowerCase().equals(resourceName.toLowerCase())) { + + normalizeDBInfo(resources.get(i)); + + for (int j = 0; j < resources.get(i).getAccessPoints().size(); j++) { + + // if (resources.get(i).getAccessPoints().get(j) + // .getDatabaseName().equals(databaseName)) { + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getUsername()); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getPassword()); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getDriver()); + // + // // driverInfo = + // // resources.get(i).getAccessPoints().get(j) + // // .getDriver(); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getDialect()); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .address()); + // + // info.add(databaseName); + // + // break check; + // + // } + + // if (resources.get(i).getAccessPoints().get(j) + // .address().equals(url)){ + // + // System.out.println("url selezionato"); + // + // + // + // } + + if (resources.get(i).getAccessPoints().get(j) + .getDatabaseName().toLowerCase().equals(databaseName.toLowerCase())) { + + info.add(resources.get(i).getAccessPoints().get(j) + .getUsername()); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->username: " + + resources.get(i).getAccessPoints() + .get(j).getUsername()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getPassword()); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->password: " + + resources.get(i).getAccessPoints() + .get(j).getPassword()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDriver()); + + driverInfo = resources.get(i).getAccessPoints().get(j) + .getDriver(); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->driver: " + + resources.get(i).getAccessPoints() + .get(j).getDriver()); + + // driverInfo = + // resources.get(i).getAccessPoints().get(j) + // .getDriver(); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDialect()); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->dialect: " + + resources.get(i).getAccessPoints() + .get(j).getDialect()); + + info.add(resources.get(i).getAccessPoints().get(j) + .address()); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->url: " + + resources.get(i).getAccessPoints() + .get(j).address()); + + info.add(databaseName); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->databasename: " + + resources.get(i).getAccessPoints() + .get(j).getDatabaseName()); + + break check; + + } + + } + + } + + } + + AnalysisLogger + .getLogger() + .debug("In GetTableDetails->information useful for connection: retrieved"); + return info; + + } + + // method that retrieves information such as "CreateTableStatement" and the + // number of rows about the table chosen by the user + private LinkedHashMap getDetails() + throws Exception { + + + tableName = getInputParameter("TableName"); + + if(tableName != null){ + tableName = getInputParameter("TableName").trim(); + } + if ((tableName == null) || (tableName.equals(""))) { + throw new Exception("Warning: insert the table name"); + } + + if (driverInfo.toLowerCase().contains("postgres")) { + + schemaName = getInputParameter("SchemaName"); + if(schemaName != null){ + schemaName = getInputParameter("SchemaName").trim(); + } + if ((schemaName == null) || (schemaName.equals(""))) { + throw new Exception("Warning: insert the schema name"); + } + } + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->getting details on the table: " + tableName); + + // recover metadata of the table + + // recover the "show create" statement + + String createTable = null; + + if ((driverInfo.toLowerCase().contains("postgres"))) { + + createTable = mgt.getCreateTable(tableName, schemaName); + + } + + if ((driverInfo.toLowerCase().contains("mysql"))) { + + createTable = mgt.getCreateTable(tableName, databaseName); + + } + + PrimitiveType valCreateTable = new PrimitiveType( + String.class.getName(), createTable, PrimitiveTypes.STRING, + "Create Table Statement", "Create Table Statement"); + + map.put("CreateTable", valCreateTable); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->getting the \"CreateTableStatement\": " + + createTable); + + // to retrieve the column names of a table + List listColumnNamesTable = mgt.getListColumnNamesTable(); + + String ColumnName = ""; + + for (int i = 0; i < listColumnNamesTable.size(); i++) { + + if (i != listColumnNamesTable.size() - 1) { + ColumnName = ColumnName + listColumnNamesTable.get(i) + ","; + } else { + ColumnName = ColumnName + listColumnNamesTable.get(i); + + } + + } + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->column names: " + + ColumnName); + + PrimitiveType valListColumnNamesTable = new PrimitiveType( + String.class.getName(), ColumnName, PrimitiveTypes.STRING, + "Column Name", "Column Name"); + + map.put("Column Names", valListColumnNamesTable); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->getting the column names list: " + + createTable); + + // recover the number of rows + // BigInteger rows = mgt.getNumberOfRows(tableName); + + long rows = 0; + + if ((driverInfo.toLowerCase().contains("postgres"))) { + AnalysisLogger.getLogger().debug( + "In GetTableDetails->schemaName:" + schemaName);; + + rows = mgt.getNumberOfRows(tableName, schemaName); + + } + + if ((driverInfo.toLowerCase().contains("mysql"))) { + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->*databasename:" + databaseName);; + + rows = mgt.getNumberOfRows(tableName, databaseName); + + } + +// long rows = mgt.getNumberOfRows(tableName); + + // PrimitiveType valRows = new PrimitiveType( + // String.class.getName(), rows.toString(), + // PrimitiveTypes.STRING, "NumberRows", "Rows' Number"); + + PrimitiveType valRows = new PrimitiveType(String.class.getName(), + Long.toString(rows), PrimitiveTypes.STRING, "Number Rows", + "Rows' Number"); + + map.put("NumberRows", valRows); + + // AnalysisLogger + // .getLogger() + // .debug("In TableDetails->getting the number of rows: " + + // rows.toString()); + + AnalysisLogger.getLogger().debug( + "In GetTableDetails->getting the number of rows: " + + Long.toString(rows)); + + return map; + + } + + private void normalizeDBInfo(DBResource resource) throws Exception { + + try{ + int ap = resource.getAccessPoints().size(); + + for (int i = 0; i < ap; i++) { + resource.normalize(i); + } + + }catch (Exception e) { + AnalysisLogger.getLogger().debug( + "In GetTableDetails->: Error in normalization process" + + e.getMessage()); + + throw e; + } + +// int ap = resource.getAccessPoints().size(); +// +// for (int i = 0; i < ap; i++) { +// +// try { +// resource.normalize(i); +// } catch (IOException e) { +// +// // e.printStackTrace(); +// AnalysisLogger.getLogger().debug( +// "In GetTableDetails->: Error in normalization process" +// + e.getMessage()); +// +// throw e; +// +// } +// +// } + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListDBInfo.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListDBInfo.java new file mode 100644 index 0000000..ec7ed37 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListDBInfo.java @@ -0,0 +1,293 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.UUID; + +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataaccess.databases.access.DatabasesDiscoverer; +import org.gcube.dataaccess.databases.resources.DBResource; +import org.gcube.dataaccess.databases.resources.DBResource.AccessPoint; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.gcube.resources.discovery.client.api.DiscoveryException; +import org.gcube.resources.discovery.client.api.InvalidResultException; + +/** Class that allows to retrieve information about the chosen resource */ +public class ListDBInfo extends StandardLocalExternalAlgorithm { + + private LinkedHashMap map = new LinkedHashMap(); + + // database's parameters specified by the user + private String resourceName = null; + + // list that contains information about the resource + private List ap = new ArrayList(); + + // variable that keeps track of database platform version + private String platformVersion = ""; + + @Override + public void init() throws Exception { + + AnalysisLogger.getLogger().debug("In ListDBInfo->Initialization"); + + String scope = config.getGcubeScope(); + + AnalysisLogger.getLogger().debug("In ListDBInfo->scope set by config object: " + scope); + + + + if (scope == null || scope.length() == 0) { + + scope = ScopeProvider.instance.get(); + AnalysisLogger.getLogger().debug("In ListDBInfo->scope set by ScopeProvider: " + scope); + + + }else{ + + ScopeProvider.instance.set(scope); + + } + } + + @Override + public String getDescription() { + // add a simple description for the algorithm + return "Algorithm that allows to view information about one chosen resource of Database Type in the Infrastructure"; + } + + @Override + protected void process() throws Exception, IOException, IllegalStateException, DiscoveryException, InvalidResultException { + AnalysisLogger.getLogger().debug("In ListDBInfo->Processing"); + + AnalysisLogger.getLogger().debug("Scope: " + ScopeProvider.instance.get()); + + + try{ + // retrieve information + List apInfo = retrieveInfo(); + + AnalysisLogger.getLogger().debug("access point dimension: " + apInfo.size()); + + for (int i = 0; i < apInfo.size(); i++) { + String name = "Database name "+(i+1); + PrimitiveType DBName = new PrimitiveType(String.class.getName(), + apInfo.get(i).getDatabaseName(), PrimitiveTypes.STRING, + name + , name); + + + + map.put(name, DBName); + + AnalysisLogger.getLogger().debug( + "In ListDBInfo->Database Name: " + + apInfo.get(i).getDatabaseName()); + String urlId="URL "+(i+1); + PrimitiveType url = new PrimitiveType(String.class.getName(), + apInfo.get(i).address(), PrimitiveTypes.STRING, urlId, + urlId); + + map.put(urlId, url); + + AnalysisLogger.getLogger().debug( + "In ListDBInfo->URL: " + apInfo.get(i).address()); + + String driverId="Driver name "+(i+1); + PrimitiveType driver = new PrimitiveType(String.class.getName(), + apInfo.get(i).getDriver(), PrimitiveTypes.STRING, + driverId, driverId); + + map.put(driverId, driver); + + AnalysisLogger.getLogger().debug( + "In ListDBInfo->Driver Name: " + + apInfo.get(i).getDriver()); + + String dialectId="Dialect name "+(i+1); + PrimitiveType dialect = new PrimitiveType(String.class.getName(), + apInfo.get(i).getDialect(), PrimitiveTypes.STRING, + dialectId, dialectId); + + map.put(dialectId, dialect); + + AnalysisLogger.getLogger().debug( + "In ListDBInfo->Dialect Name: " + + apInfo.get(i).getDialect()); + + String platformId="Platform Version "+(i+1); + PrimitiveType platformVersionValue = new PrimitiveType(String.class.getName(), + platformVersion, PrimitiveTypes.STRING, + platformId, platformId); + + map.put(platformId, platformVersionValue); + + AnalysisLogger.getLogger().debug( + "In ListDBInfo->Platform Version: " + + platformVersion); + + + + } + + } + + catch (IllegalStateException e) { +// e.printStackTrace(); + + AnalysisLogger.getLogger().debug("In ListDBInfo-> ERROR " + e.getMessage()); + throw e; + + } catch (DiscoveryException e1) { +// e1.printStackTrace(); + + AnalysisLogger.getLogger().debug("In ListDBInfo-> ERROR " + e1.getMessage()); + + throw e1; + + } catch (InvalidResultException e2) { +// e2.printStackTrace(); + + AnalysisLogger.getLogger().debug("In ListDBInfo-> ERROR " + e2.getMessage()); + + + throw e2; + + } +// catch(IOException e3){ +//// e3.printStackTrace(); +// +// AnalysisLogger.getLogger().debug("In ListDBInfo-> Exception " + e3.getMessage()); +// +// throw e3; +// } + + catch(Exception e4){ + +// e4.printStackTrace(); + AnalysisLogger.getLogger().debug("In ListDBInfo-> Exception " + e4.getMessage()); + + throw e4; + + } + + + } + + @Override + protected void setInputParameters() { + +// AnalysisLogger.getLogger().debug("In ListDBInfo->setting inputs"); + + // resource name specified by the user + addStringInput("ResourceName", "The name of the resource", ""); + + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("In ListDBInfo->Shutdown"); + + } + + @Override + public StatisticalType getOutput() { + + AnalysisLogger.getLogger().debug("In ListDBInfo->retrieving outputs"); + + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(LinkedHashMap.class.getName(), + map, PrimitiveTypes.MAP, "ResultsMap"+UUID.randomUUID(), "Results Map"); + + return output; + + } + + private List retrieveInfo() throws Exception, IllegalStateException, DiscoveryException, InvalidResultException { + + resourceName = getInputParameter("ResourceName"); + + if (resourceName != null) { + resourceName = getInputParameter("ResourceName").trim(); + } + + if ((resourceName == null) || (resourceName.equals(""))) { + throw new Exception("Warning: insert the resource name"); + } + + // retrieve information about the chosen resource + DatabasesDiscoverer discovery = new DatabasesDiscoverer(); + + List resources = discovery.discover(); + + AnalysisLogger.getLogger().debug( + "In ListDBInfo->number of database resources: " + + resources.size()); + + check: for (int i = 0; i < resources.size(); i++) { + + if (resources.get(i).getResourceName().toLowerCase().equals(resourceName.toLowerCase())) { + + platformVersion = resources.get(i).getPlatformVersion(); + + // ap = resources.get(i).getAccessPoints(); + + normalizeDBInfo(resources.get(i)); + + ap = resources.get(i).getAccessPoints(); + + break check; + + } + + } + return ap; + + } + + private void normalizeDBInfo(DBResource resource) throws Exception { + + try{ + int ap = resource.getAccessPoints().size(); + + for (int i = 0; i < ap; i++) { + resource.normalize(i); + } + + }catch (Exception e) { + AnalysisLogger.getLogger().debug( + "In ListDBInfo->: Error in normalization process" + + e.getMessage()); + + throw e; + } + +// int ap = resource.getAccessPoints().size(); +// +// for (int i = 0; i < ap; i++) { +// +// try { +// resource.normalize(i); +// } +//// catch (IOException e) { +// catch (IOException e) { +// // TODO Auto-generated catch block +//// e.printStackTrace(); +// AnalysisLogger.getLogger().debug( +// "In ListDBInfo->: Error in normalization process" +// + e.getMessage()); +// throw e; +// +// } +// +// } + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListNames.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListNames.java new file mode 100644 index 0000000..fd7ffb9 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListNames.java @@ -0,0 +1,177 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataaccess.databases.access.DatabasesDiscoverer; +import org.gcube.dataaccess.databases.resources.DBResource; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.gcube.resources.discovery.client.api.DiscoveryException; +import org.gcube.resources.discovery.client.api.InvalidResultException; + +/** Class that allows to retrieve a list of database resources */ +public class ListNames extends StandardLocalExternalAlgorithm { + + private HashMap map = new LinkedHashMap(); + + @Override + public void init() throws Exception { + + AnalysisLogger.getLogger().debug("In ListNames->Initialization"); + + String scope = config.getGcubeScope(); + + AnalysisLogger.getLogger().debug( + "In ListNames->scope set by config object: " + scope); + + if (scope == null || scope.length() == 0) { + + scope = ScopeProvider.instance.get(); + + AnalysisLogger.getLogger().debug( + "In ListNames->scope set by ScopeProvider: " + scope); + + } else { + + ScopeProvider.instance.set(scope); + + } + } + + @Override + public String getDescription() { + // add a simple description for the algorithm + return "Algorithm that allows to view the available database resources names in the Infrastructure"; + + } + + @Override + protected void process() throws Exception { + + AnalysisLogger.getLogger().debug("In ListNames->Processing"); + + String scope = ScopeProvider.instance.get(); + + if (scope != null) { + + AnalysisLogger.getLogger().debug("getting scope: " + scope); + + AnalysisLogger.getLogger().debug( + "getting scope through config: " + config.getGcubeScope()); + + } + + try { + // retrieve resources + List resources = this.retrieveResources(); + + // add the name to the list + + // list that contains the resource's names + ArrayList listnames = new ArrayList(); + + for (int i = 0; i < resources.size(); i++) { + String name = "Resource name "+(i+1); + PrimitiveType val = new PrimitiveType(String.class.getName(), + null, PrimitiveTypes.STRING, name, name); + + AnalysisLogger.getLogger().debug( + "In ListNames->Resource's name: " + + resources.get(i).getResourceName()); + + listnames.add(resources.get(i).getResourceName()); + + val.setContent(listnames.get(i)); + + map.put(name, val); + + } + + AnalysisLogger.getLogger().debug( + "In ListNames->Output Map Size: " + map.size()); + + } catch (IllegalStateException e) { + // e.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListNames-> ERROR " + e.getMessage()); + throw e; + + } catch (DiscoveryException e1) { + // e1.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListNames-> ERROR " + e1.getMessage()); + + throw e1; + + } catch (InvalidResultException e2) { + // e2.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListNames-> ERROR " + e2.getMessage()); + + throw e2; + + } + + } + + @Override + protected void setInputParameters() { + +// AnalysisLogger.getLogger().debug("In ListNames->setting inputs"); + addStringInput("MaxNumber", "Max Number of Resources (-1 for all)", + "-1"); + + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("In ListNames->Shutdown"); + + } + + @Override + public StatisticalType getOutput() { + + AnalysisLogger.getLogger().debug("In ListNames->retrieving outputs"); + + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(Map.class.getName(), + map, PrimitiveTypes.MAP, "ResultsMap"+UUID.randomUUID(), "Results Map"); + + return output; + + } + + + private List retrieveResources() throws IllegalStateException, + DiscoveryException, InvalidResultException { + + AnalysisLogger.getLogger().debug("In ListNames->retrieving resources"); + List resources = new ArrayList(); + + // retrieve the resources + DatabasesDiscoverer discovery = new DatabasesDiscoverer(); + + resources = discovery.discover(); + + AnalysisLogger.getLogger().debug( + "In ListNames->number of database resources: " + + resources.size()); + + return resources; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListSchemas.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListSchemas.java new file mode 100644 index 0000000..3ab6410 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListSchemas.java @@ -0,0 +1,473 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.UUID; + +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataaccess.databases.access.DatabasesDiscoverer; +import org.gcube.dataaccess.databases.resources.DBResource; +import org.gcube.dataaccess.databases.utils.DatabaseManagement; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.gcube.resources.discovery.client.api.DiscoveryException; +import org.gcube.resources.discovery.client.api.InvalidResultException; +import org.hibernate.HibernateException; +import org.hibernate.SessionFactory; + +/** + * class that allows to retrieve schema's names of a chosen database. In this + * case the database's type is "postgresql" + */ +public class ListSchemas extends StandardLocalExternalAlgorithm { + + private LinkedHashMap map = new LinkedHashMap(); + private DatabaseManagement mgt; + + // database's parameters specified by the user + private String resourceName = null; + private String databaseName = null; + + private SessionFactory sf; + + @Override + public void init() throws Exception { + mgt = new DatabaseManagement(config.getConfigPath()); + AnalysisLogger.getLogger().debug("In ListSchemas->Initialization"); + + String scope = config.getGcubeScope(); + + AnalysisLogger.getLogger().debug( + "In ListSchemas->scope set by config object: " + scope); + + if (scope == null || scope.length() == 0) { + + scope = ScopeProvider.instance.get(); + + AnalysisLogger.getLogger().debug( + "In ListSchemas->scope set by ScopeProvider: " + scope); + + } else { + + ScopeProvider.instance.set(scope); + + } + } + + @Override + public String getDescription() { + // add a simple description for the algorithm + + return "Algorithm that allows to view the schema names of a chosen database for which the type is Postgres"; + + } + + @Override + protected void process() throws Exception, IOException, + IllegalStateException, DiscoveryException, InvalidResultException, + HibernateException { + + AnalysisLogger.getLogger().debug("In ListSchemas->Processing"); + + try { + + // retrieve information useful for connection + + List Info = retrieveInfo(); + + // create the connection + getConnection(Info); + + // get the schema's list + + List listSchemas = new ArrayList(); + listSchemas = getSchemas(); + + if (listSchemas.size() == 0) { + + AnalysisLogger.getLogger().debug( + "In ListSchemas->Warning: no schema available"); + + } + + for (int i = 0; i < listSchemas.size(); i++) { + + PrimitiveType val = new PrimitiveType(String.class.getName(), + null, PrimitiveTypes.STRING, "schema's name", + "schema's name"); + + val.setContent(listSchemas.get(i)); + + map.put(String.valueOf(i), val); + + // AnalysisLogger.getLogger().debug( + // "In ListSchemas->getting schema's name: " + // + val.getContent()); + + } + + } catch (HibernateException h) { + + AnalysisLogger.getLogger().debug( + "In ListSchemas-> ERROR " + h.getMessage()); + throw h; + } + + catch (IllegalStateException e) { + // e.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListSchemas-> ERROR " + e.getMessage()); + + throw e; + + } catch (DiscoveryException e1) { + // e1.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListSchemas-> ERROR " + e1.getMessage()); + + throw e1; + + } catch (InvalidResultException e2) { + // e2.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListSchemas-> ERROR " + e2.getMessage()); + + throw e2; + + } catch (IOException e3) { + // e3.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListSchemas-> Exception " + e3.getMessage()); + + throw e3; + } + + catch (Exception e4) { + // e4.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListSchemas-> Exception " + e4.getMessage()); + + throw e4; + + } finally { + // close the connection + mgt.closeConnection(); + } + } + + @Override + protected void setInputParameters() { + + // AnalysisLogger.getLogger().debug("In ListSchemas->setting inputs"); + + // resource and database's name specified by the user + + addStringInput("ResourceName", "The name of the resource", ""); + addStringInput("DatabaseName", "The name of the database", ""); + + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("In ListSchemas->Shutdown"); + + } + + @Override + public StatisticalType getOutput() { + + AnalysisLogger.getLogger().debug("In ListSchemas->retrieving outputs"); + + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(LinkedHashMap.class.getName(), + map, PrimitiveTypes.MAP, "ResultsMap" + UUID.randomUUID(), + "Results Map"); + + return output; + + } + + // method that retrieves the schema's list + private List getSchemas() throws Exception { + + List listSchemas = new ArrayList(); + + try { + + listSchemas = mgt.getSchemas(); + + } catch (Exception e) { + + // e.printStackTrace(); + + // System.out.println(e.getMessage()); + + throw e; + + } + +// finally { +// if (sf.isClosed() == false) { +// mgt.closeConnection(); +// } +// } + + return listSchemas; + + } + + // method that retrieves information useful for the connection + private List retrieveInfo() throws Exception, + IllegalStateException, DiscoveryException, InvalidResultException { + + // the user specifies the resource and the database'name + + resourceName = getInputParameter("ResourceName"); + + if (resourceName != null) { + resourceName = getInputParameter("ResourceName").trim(); + } + + if ((resourceName == null) || (resourceName.equals(""))) { + throw new Exception("Warning: insert the resource name"); + } + + databaseName = getInputParameter("DatabaseName"); + + if (databaseName != null) { + databaseName = getInputParameter("DatabaseName").trim(); + } + if ((databaseName == null) || (databaseName.equals(""))) { + throw new Exception("Warning: insert the database name"); + } + + // retrieve the chosen resource + DatabasesDiscoverer discovery = new DatabasesDiscoverer(); + + // list that contains information useful for the connection + List info = new ArrayList(); + + // try{ + + List resources = discovery.discover(); + + AnalysisLogger.getLogger().debug( + "In ListSchemas->number of database resources: " + + resources.size()); + + for (int i = 0; i < resources.size(); i++) { + + AnalysisLogger.getLogger().debug( + "In ListSchemas->Resource's name: " + + resources.get(i).getResourceName()); + + } + + check: for (int i = 0; i < resources.size(); i++) { + + if (resources.get(i).getResourceName().toLowerCase() + .equals(resourceName.toLowerCase())) { + + normalizeDBInfo(resources.get(i)); + + for (int j = 0; j < resources.get(i).getAccessPoints().size(); j++) { + + // if (resources.get(i).getAccessPoints().get(j) + // .getDatabaseName().equals(databaseName)) { + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getUsername()); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getPassword()); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getDriver()); + // + // // driverInfo = + // // resources.get(i).getAccessPoints().get(j) + // // .getDriver(); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getDialect()); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .address()); + // + // info.add(databaseName); + // + // break check; + // + // } + + // if (resources.get(i).getAccessPoints().get(j) + // .address().equals(url)){ + // + // System.out.println("url selezionato"); + // + // + // + // } + + if (resources.get(i).getAccessPoints().get(j) + .getDatabaseName().toLowerCase() + .equals(databaseName.toLowerCase())) { + + info.add(resources.get(i).getAccessPoints().get(j) + .getUsername()); + + AnalysisLogger.getLogger().debug( + "In ListSchemas->username: " + + resources.get(i).getAccessPoints() + .get(j).getUsername()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getPassword()); + + AnalysisLogger.getLogger().debug( + "In ListSchemas->password: " + + resources.get(i).getAccessPoints() + .get(j).getPassword()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDriver()); + + AnalysisLogger.getLogger().debug( + "In ListSchemas->driver: " + + resources.get(i).getAccessPoints() + .get(j).getDriver()); + + // driverInfo = + // resources.get(i).getAccessPoints().get(j) + // .getDriver(); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDialect()); + + AnalysisLogger.getLogger().debug( + "In ListSchemas->dialect: " + + resources.get(i).getAccessPoints() + .get(j).getDialect()); + + info.add(resources.get(i).getAccessPoints().get(j) + .address()); + + AnalysisLogger.getLogger().debug( + "In ListSchemas->url: " + + resources.get(i).getAccessPoints() + .get(j).address()); + + info.add(databaseName); + + AnalysisLogger.getLogger().debug( + "In ListSchemas->databasename: " + + resources.get(i).getAccessPoints() + .get(j).getDatabaseName()); + + break check; + + } + + } + + } + + } + + AnalysisLogger.getLogger().debug( + "In ListSchemas->information useful for connection: retrieved"); + + // } + // catch(IllegalStateException e) + // { + // // e.printStackTrace(); + // throw e; + // } + // catch(DiscoveryException e1) + // { + // e1.printStackTrace(); + // throw e1; + // } + // catch(InvalidResultException e2) + // { + // e2.printStackTrace(); + // throw e2; + // } + + return info; + + } + + // method that allows to create the connection + private void getConnection(List Info) throws IOException { + + // create the connection + Iterator iterator = Info.iterator(); + + String DatabaseUserName = iterator.next(); + String DatabasePassword = iterator.next(); + String DatabaseDriver = iterator.next(); + String DatabaseDialect = iterator.next(); + String DatabaseURL = iterator.next(); + String DatabaseName = iterator.next(); + + mgt.createConnection(DatabaseUserName, + DatabasePassword, DatabaseDriver, DatabaseDialect, DatabaseURL, + DatabaseName); + + // if (sf.isClosed()){ + + // AnalysisLogger.getLogger().debug("In ListSchemas->database "+DatabaseName+": connected"); + + // } + } + + private void normalizeDBInfo(DBResource resource) throws Exception { + + try{ + int ap = resource.getAccessPoints().size(); + + for (int i = 0; i < ap; i++) { + resource.normalize(i); + } + + }catch (Exception e) { + AnalysisLogger.getLogger().debug( + "In ListSchemas->: Error in normalization process" + + e.getMessage()); + + throw e; + } + +// int ap = resource.getAccessPoints().size(); +// +// for (int i = 0; i < ap; i++) { +// +//// try { +// resource.normalize(i); +//// } catch (IOException e) { +// +// // e.printStackTrace(); +//// AnalysisLogger.getLogger().debug( +//// "In ListTables->: Error in normalization process" +//// + e.getMessage()); +// +//// throw e; +// +//// } +// +// } + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListTables.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListTables.java new file mode 100644 index 0000000..cc46fd6 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/ListTables.java @@ -0,0 +1,460 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.UUID; + +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataaccess.databases.access.DatabasesDiscoverer; +import org.gcube.dataaccess.databases.resources.DBResource; +import org.gcube.dataaccess.databases.utils.DatabaseManagement; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.gcube.resources.discovery.client.api.DiscoveryException; +import org.gcube.resources.discovery.client.api.InvalidResultException; +import org.hibernate.HibernateException; +import org.hibernate.SessionFactory; + +/** Class that allows to retrieve the tables's names of a chosen database */ +public class ListTables extends StandardLocalExternalAlgorithm { + + private LinkedHashMap map = new LinkedHashMap(); + private DatabaseManagement mgt; + // variable that keeps track of the database's type + private String driverInfo; + + // database's parameters specified by the user + private String resourceName = null; + private String databaseName = null; + private String schemaName = null; + + private SessionFactory sf; + + @Override + public void init() throws Exception { + mgt = new DatabaseManagement(config.getConfigPath()); + AnalysisLogger.getLogger().debug("In ListTables->Initialization"); + + String scope = config.getGcubeScope(); + + AnalysisLogger.getLogger().debug( + "In ListTables->scope set by config object: " + scope); + + if (scope == null || scope.length() == 0) { + + scope = ScopeProvider.instance.get(); + + AnalysisLogger.getLogger().debug( + "In ListTables->scope set by ScopeProvider: " + scope); + + } else { + + ScopeProvider.instance.set(scope); + + } + + } + + @Override + public String getDescription() { + // add a simple description for the algorithm + + return "Algorithm that allows to view the table names of a chosen database"; + + } + + @Override + protected void process() throws Exception, IOException, + IllegalStateException, DiscoveryException, InvalidResultException, + HibernateException { + + AnalysisLogger.getLogger().debug("In ListTables->Processing"); + + try { + + // retrieve information useful for the connection + + List Info = retrieveInfo(); + + // create the connection + getConnection(Info); + + // get the table' list + + List listTables = new ArrayList(); + + if (driverInfo.toLowerCase().contains("postgres")) { + + schemaName = getInputParameter("SchemaName"); + if(schemaName != null){ + schemaName = getInputParameter("SchemaName").trim(); + } + if ((schemaName == null) || (schemaName.equals(""))) { + throw new Exception("Warning: insert the schema name"); + } + + // if (!schemaName.equals("")) { + + listTables = mgt.getTables(databaseName, schemaName); + + AnalysisLogger + .getLogger() + .debug("In ListTables->getting table's name for database postgres"); + + // } + + } + + if (driverInfo.toLowerCase().contains("mysql")) { + + listTables = mgt.getTables(databaseName, null); + + AnalysisLogger + .getLogger() + .debug("In ListTables->getting table's name for database mysql"); + + } + + // if (listTables.size()==0){ + // + // AnalysisLogger.getLogger().debug("In ListTables->Warning: no table available"); + // + // } + + // TODO: manage also the oracle type + + if (listTables == null) { + + AnalysisLogger.getLogger().debug( + "In ListTables->Warning: no tables available"); + + } else { + + for (int i = 0; i < listTables.size(); i++) { + + PrimitiveType val = new PrimitiveType( + String.class.getName(), null, + PrimitiveTypes.STRING, "Table's name", + "Table's name"); + + val.setContent(listTables.get(i)); + + map.put(String.valueOf(i), val); + + // AnalysisLogger.getLogger().debug( + // "In ListTables->getting table's name: " + // + val.getContent()); + + } + } + + } catch (HibernateException h) { + + AnalysisLogger.getLogger().debug( + "In ListTables-> ERROR " + h.getMessage()); + throw h; + } catch (IllegalStateException e) { + // e.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListTables-> ERROR " + e.getMessage()); + throw e; + + } catch (DiscoveryException e1) { + // e1.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListTables-> ERROR " + e1.getMessage()); + + throw e1; + + } catch (InvalidResultException e2) { + // e2.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListTables-> ERROR " + e2.getMessage()); + + throw e2; + + } catch (IOException e3) { + // e3.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListTables-> Exception " + e3.getMessage()); + + throw e3; + } + + catch (Exception e4) { + // e4.printStackTrace(); + + AnalysisLogger.getLogger().debug( + "In ListTables-> Exception " + e4.getMessage()); + + throw e4; + + } finally { + // close the connection + mgt.closeConnection(); + } + } + + @Override + protected void setInputParameters() { + + // AnalysisLogger.getLogger().debug("In ListTables->setting inputs"); + + // parameters specified by the user + addStringInput("ResourceName", "The name of the resource", ""); + addStringInput("DatabaseName", "The name of the database", ""); + addStringInput("SchemaName", "The name of the schema", ""); + + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("In ListTables->Shutdown"); + + } + + @Override + public StatisticalType getOutput() { + + AnalysisLogger.getLogger().debug("In ListTables->retrieving outputs"); + + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(LinkedHashMap.class.getName(), + map, PrimitiveTypes.MAP, "ResultsMap" + UUID.randomUUID(), + "Results Map"); + + return output; + + } + + private List retrieveInfo() throws Exception, + IllegalStateException, DiscoveryException, InvalidResultException { + + // parameters specified by the user + resourceName = getInputParameter("ResourceName"); + + if (resourceName != null) { + resourceName = getInputParameter("ResourceName").trim(); + } + + if ((resourceName == null) || (resourceName.equals(""))) { + throw new Exception("Warning: insert the resource name"); + } + + databaseName = getInputParameter("DatabaseName"); + + if (databaseName != null) { + databaseName = getInputParameter("DatabaseName").trim(); + } + if ((databaseName == null) || (databaseName.equals(""))) { + throw new Exception("Warning: insert the database name"); + } + + // retrieve the chosen resource + DatabasesDiscoverer discovery = new DatabasesDiscoverer(); + + List resources = discovery.discover(); + + AnalysisLogger.getLogger().debug( + "In ListTables->number of database resources: " + + resources.size()); + + for (int i = 0; i < resources.size(); i++) { + + AnalysisLogger.getLogger().debug( + "In ListTables->Resource's name: " + + resources.get(i).getResourceName()); + + } + + // list that contains information useful for the connection + List info = new ArrayList(); + + check: for (int i = 0; i < resources.size(); i++) { + + if (resources.get(i).getResourceName().toLowerCase() + .equals(resourceName.toLowerCase())) { + + normalizeDBInfo(resources.get(i)); + + for (int j = 0; j < resources.get(i).getAccessPoints().size(); j++) { + + // if (resources.get(i).getAccessPoints().get(j) + // .getDatabaseName().equals(databaseName)) { + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getUsername()); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getPassword()); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getDriver()); + // + // // driverInfo = + // // resources.get(i).getAccessPoints().get(j) + // // .getDriver(); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .getDialect()); + // + // info.add(resources.get(i).getAccessPoints().get(j) + // .address()); + // + // info.add(databaseName); + // + // break check; + // + // } + + // if (resources.get(i).getAccessPoints().get(j) + // .address().equals(url)){ + // + // System.out.println("url selezionato"); + // + // + // + // } + + if (resources.get(i).getAccessPoints().get(j) + .getDatabaseName().toLowerCase() + .equals(databaseName.toLowerCase())) { + + info.add(resources.get(i).getAccessPoints().get(j) + .getUsername()); + + AnalysisLogger.getLogger().debug( + "In ListTables->username: " + + resources.get(i).getAccessPoints() + .get(j).getUsername()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getPassword()); + + AnalysisLogger.getLogger().debug( + "In ListTables->password: " + + resources.get(i).getAccessPoints() + .get(j).getPassword()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDriver()); + + driverInfo = resources.get(i).getAccessPoints().get(j) + .getDriver(); + + AnalysisLogger.getLogger().debug( + "In ListTables->driver: " + + resources.get(i).getAccessPoints() + .get(j).getDriver()); + + // driverInfo = + // resources.get(i).getAccessPoints().get(j) + // .getDriver(); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDialect()); + + AnalysisLogger.getLogger().debug( + "In ListTables->dialect: " + + resources.get(i).getAccessPoints() + .get(j).getDialect()); + + info.add(resources.get(i).getAccessPoints().get(j) + .address()); + + AnalysisLogger.getLogger().debug( + "In ListTables->url: " + + resources.get(i).getAccessPoints() + .get(j).address()); + + info.add(databaseName); + + AnalysisLogger.getLogger().debug( + "In ListTables->databasename: " + + resources.get(i).getAccessPoints() + .get(j).getDatabaseName()); + + break check; + + } + + } + + } + + } + + AnalysisLogger.getLogger().debug( + "In ListTables->information useful for connection: retrieved"); + + return info; + + } + + private void getConnection(List Info) throws IOException { + + // create the connection + Iterator iterator = Info.iterator(); + + String DatabaseUserName = iterator.next(); + String DatabasePassword = iterator.next(); + String DatabaseDriver = iterator.next(); + String DatabaseDialect = iterator.next(); + String DatabaseURL = iterator.next(); + String DatabaseName = iterator.next(); + + mgt.createConnection(DatabaseUserName, + DatabasePassword, DatabaseDriver, DatabaseDialect, DatabaseURL, + DatabaseName); + + AnalysisLogger.getLogger().debug( + "In ListTables->database " + DatabaseName + ": connected"); + } + + private void normalizeDBInfo(DBResource resource) throws Exception { + + try{ + int ap = resource.getAccessPoints().size(); + + for (int i = 0; i < ap; i++) { + resource.normalize(i); + } + + }catch (Exception e) { + AnalysisLogger.getLogger().debug( + "In ListTables->: Error in normalization process" + + e.getMessage()); + + throw e; + } + +// int ap = resource.getAccessPoints().size(); +// +// for (int i = 0; i < ap; i++) { +// +// try { +// resource.normalize(i); +// } catch (IOException e) { +// // e.printStackTrace(); +// +// AnalysisLogger.getLogger().debug( +// "In ListTables->: Error in normalization process" +// + e.getMessage()); +// +// throw e; +// } +// +// } + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/RandomSampleOnTable.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/RandomSampleOnTable.java new file mode 100644 index 0000000..abc1e54 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/RandomSampleOnTable.java @@ -0,0 +1,411 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.UUID; + +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataaccess.databases.access.DatabasesDiscoverer; +import org.gcube.dataaccess.databases.resources.DBResource; +import org.gcube.dataaccess.databases.utils.DatabaseManagement; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.gcube.resources.discovery.client.api.DiscoveryException; +import org.gcube.resources.discovery.client.api.InvalidResultException; +import org.hibernate.HibernateException; +import org.hibernate.SessionFactory; + +/** + * Class that allows to perform a random sample operation on a table of a chosen + * database. It retrieves 100 rows of a table randomly. + */ + +public class RandomSampleOnTable extends StandardLocalExternalAlgorithm { + + private LinkedHashMap map = new LinkedHashMap(); + + // object that allows to manage some operations on a database + private DatabaseManagement mgt; + // database's parameters specified by the user + private String resourceName = null; + private String databaseName = null; + private String schemaName = null; + private String tableName = null; + + private SessionFactory sf; + // variable that keeps track of the driver information + private String driverInfo; + + @Override + public void init() throws Exception { + + mgt = new DatabaseManagement(config.getConfigPath()); + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable->Initialization"); + + String scope = config.getGcubeScope(); + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable->scope set by config object: " + + scope); + + if (scope == null || scope.length() == 0) { + scope = ScopeProvider.instance.get(); + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable->scope set by ScopeProvider: " + + scope); + } else { + ScopeProvider.instance.set(scope); + } + } + + @Override + public String getDescription() { + return "Algorithm that allows to perform a sample operation on a table randomly"; + } + + @Override + protected void process() throws Exception { + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable->Processing"); + + try { + // retrieve information + List Info = retrieveInfo(); + + // check on table name field + tableName = getInputParameter("TableName"); + if(tableName != null){ + tableName = getInputParameter("TableName").trim(); + } + if ((tableName == null) || (tableName.equals(""))) { + throw new Exception("Warning: insert the table name"); + } + + // check on schema name field + if (driverInfo.toLowerCase().contains("postgres")) { + schemaName = getInputParameter("SchemaName"); + if(schemaName != null){ + schemaName = getInputParameter("SchemaName").trim(); + } + if ((schemaName == null) || (schemaName.equals(""))) { + throw new Exception("Warning: insert the schema name"); + } + } + + // create the connection + getConnection(Info); + + // smart sample operation on table + map = randomSampleOnTable(); + + } catch (HibernateException h) { + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable-> ERROR " + h.getMessage()); + throw h; + } + + catch (IllegalStateException e) { + // e.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable-> ERROR " + e.getMessage()); + throw e; + + } catch (DiscoveryException e1) { + // e1.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable-> ERROR " + e1.getMessage()); + throw e1; + + } catch (InvalidResultException e2) { + // e2.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable-> ERROR " + e2.getMessage()); + throw e2; + + } catch (IOException e3) { + // e3.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable-> ERROR " + e3.getMessage()); + throw e3; + } + + catch (Exception e4) { + // e4.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In RandomSmartSampleOnTable-> Exception " + + e4.getMessage()); + throw e4; + + } finally { + // close the connection + mgt.closeConnection(); + } + } + + @Override + protected void setInputParameters() { + // parameters specified by the user + addStringInput("ResourceName", "The name of the resource", ""); + addStringInput("DatabaseName", "The name of the database", ""); + addStringInput("SchemaName", "The name of the schema", ""); + addStringInput("TableName", "The name of the table", ""); + } + + public StatisticalType getOutput() { + + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->retrieving outputs"); + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(LinkedHashMap.class.getName(), + map, PrimitiveTypes.MAP, "ResultsMap" + UUID.randomUUID(), + "Results Map"); + return output; + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("In RandomSampleOnTable->Shutdown"); + } + + // Method that recovers the info useful for the connection + private List retrieveInfo() throws Exception, + IllegalStateException, DiscoveryException, InvalidResultException { + + resourceName = getInputParameter("ResourceName"); + + if (resourceName != null) { + resourceName = getInputParameter("ResourceName").trim(); + } + + if ((resourceName == null) || (resourceName.equals(""))) { + throw new Exception("Warning: insert the resource name"); + } + + databaseName = getInputParameter("DatabaseName"); + + if (databaseName != null) { + databaseName = getInputParameter("DatabaseName").trim(); + } + if ((databaseName == null) || (databaseName.equals(""))) { + throw new Exception("Warning: insert the database name"); + } + + // retrieve the chosen resource + DatabasesDiscoverer discovery = new DatabasesDiscoverer(); + List resources = discovery.discover(); + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->number of elements: " + + resources.size()); + + // list that contains information useful for the connection + List info = new ArrayList(); + + check: for (int i = 0; i < resources.size(); i++) { + if (resources.get(i).getResourceName().toLowerCase() + .equals(resourceName.toLowerCase())) { + normalizeDBInfo(resources.get(i)); + for (int j = 0; j < resources.get(i).getAccessPoints().size(); j++) { + + if (resources.get(i).getAccessPoints().get(j) + .getDatabaseName().toLowerCase() + .equals(databaseName.toLowerCase())) { + + info.add(resources.get(i).getAccessPoints().get(j) + .getUsername()); + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->username: " + + resources.get(i).getAccessPoints() + .get(j).getUsername()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getPassword()); + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->password: " + + resources.get(i).getAccessPoints() + .get(j).getPassword()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDriver()); + driverInfo = resources.get(i).getAccessPoints().get(j) + .getDriver(); + + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->driver: " + + resources.get(i).getAccessPoints() + .get(j).getDriver()); + + // driverInfo = + // resources.get(i).getAccessPoints().get(j) + // .getDriver(); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDialect()); + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->dialect: " + + resources.get(i).getAccessPoints() + .get(j).getDialect()); + + info.add(resources.get(i).getAccessPoints().get(j) + .address()); + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->url: " + + resources.get(i).getAccessPoints() + .get(j).address()); + + info.add(databaseName); + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->databasename: " + + resources.get(i).getAccessPoints() + .get(j).getDatabaseName()); + break check; + } + } + } + } + + AnalysisLogger + .getLogger() + .debug("In RandomSampleOnTable->information useful for connection: retrieved"); + return info; + } + + // to normalize the information related to a database + private void normalizeDBInfo(DBResource resource) throws Exception { + + try{ + int ap = resource.getAccessPoints().size(); + + for (int i = 0; i < ap; i++) { + resource.normalize(i); + } + + }catch (Exception e) { + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->: Error in normalization process" + + e.getMessage()); + + throw e; + } + +// int ap = resource.getAccessPoints().size(); +// for (int i = 0; i < ap; i++) { +// try { +// resource.normalize(i); +// } catch (IOException e) { +// // e.printStackTrace(); +// AnalysisLogger.getLogger().debug( +// "In RandomSampleOnTable->: Error in normalization process" +// + e.getMessage()); +// throw e; +// } +// } + } + + // create the database's connection + private void getConnection(List Info) throws IOException { + + // create the connection + Iterator iterator = Info.iterator(); + + String DatabaseUserName = iterator.next(); + String DatabasePassword = iterator.next(); + String DatabaseDriver = iterator.next(); + String DatabaseDialect = iterator.next(); + String DatabaseURL = iterator.next(); + String DatabaseName = iterator.next(); + + mgt.createConnection(DatabaseUserName, + DatabasePassword, DatabaseDriver, DatabaseDialect, DatabaseURL, + DatabaseName); + + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->database " + DatabaseName + + ": connected"); + + } + + // to perform the sample operation on the table randomly + private LinkedHashMap randomSampleOnTable() + throws Exception { + + LinkedHashMap mapResults = new LinkedHashMap(); + AnalysisLogger + .getLogger() + .debug("In RandomSampleOnTable->starting the sample operation on table randomly"); + + // sample on table operation + // List resultSet = null; + + if (driverInfo.toLowerCase().contains("postgres")) { + // for a postgres database the second parameter is the schema name + // resultSet = mgt.randomSampleOnTable(tableName, schemaName, + // config.getPersistencePath()); + mgt.randomSampleOnTable(tableName, schemaName, + config.getPersistencePath()); + } + + if (driverInfo.toLowerCase().contains("mysql")) { + // for a mysql database the second parameter is the database name + // resultSet = mgt.randomSampleOnTable(tableName, databaseName, + // config.getPersistencePath()); + mgt.randomSampleOnTable(tableName, databaseName, + config.getPersistencePath()); + } + + AnalysisLogger.getLogger().debug( + "In RandomSampleOnTable->result retrieved"); + + // to add the results to the variable map + // to add the map + + HashMap mapResult = new HashMap(); + mapResult = mgt.getMapSampleTableResult(); + + String encoded = null; + encoded = new String(mapResult.get("HEADERS").getBytes(), "UTF-8"); + + // // check the encoded value + // AnalysisLogger.getLogger().debug( + // "In RandomSampleOnTable->string encoded: " + encoded); + + PrimitiveType val = new PrimitiveType(String.class.getName(), encoded, + PrimitiveTypes.STRING, "Row", "Row"); + mapResults.put("HEADERS", val); + + for (int i = 0; i < mapResult.size() - 1; i++) { + encoded = new String(mapResult.get(String.valueOf(i)).getBytes(), + "UTF-8"); + + // // check the encoded value + // AnalysisLogger.getLogger().debug( + // "In RandomSampleOnTable->string encoded: " + encoded); + + PrimitiveType val1 = new PrimitiveType(String.class.getName(), + encoded, PrimitiveTypes.STRING, "Row", "Row"); + mapResults.put(String.valueOf(i), val1); + // //check value contained in map + // String value = (String) val1.getContent(); + // + // AnalysisLogger.getLogger().debug( + // "In RandomSampleOnTable->value: " + value); + } + + // to add the file + PrimitiveType fileResult = new PrimitiveType(File.class.getName(), + mgt.getFile(), PrimitiveTypes.FILE, "File", + "File"); + mapResults.put("File", fileResult); + + return mapResults; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SampleOnTable.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SampleOnTable.java new file mode 100644 index 0000000..4c4baf7 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SampleOnTable.java @@ -0,0 +1,407 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +import java.io.File; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.UUID; + +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataaccess.databases.access.DatabasesDiscoverer; +import org.gcube.dataaccess.databases.resources.DBResource; +import org.gcube.dataaccess.databases.utils.DatabaseManagement; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.gcube.resources.discovery.client.api.DiscoveryException; +import org.gcube.resources.discovery.client.api.InvalidResultException; +import org.hibernate.HibernateException; +import org.hibernate.SessionFactory; + +/** + * Class that allows to perform a sample operation on a table of a chosen + * database. It retrieves the first 100 rows of a table. + */ +public class SampleOnTable extends StandardLocalExternalAlgorithm { + + private LinkedHashMap map = new LinkedHashMap(); + + // object that allows to manage some operations on a database + private DatabaseManagement mgt; + // database's parameters specified by the user + private String resourceName = null; + private String databaseName = null; + private String schemaName = null; + private String tableName = null; + + private SessionFactory sf; + // variable that keeps track of the driver information + private String driverInfo; + + @Override + public void init() throws Exception { + + mgt = new DatabaseManagement(config.getConfigPath()); + AnalysisLogger.getLogger().debug("In SampleOnTable->Initialization"); + + String scope = config.getGcubeScope(); + AnalysisLogger.getLogger().debug( + "In SampleOnTable->scope set by config object: " + scope); + + if (scope == null || scope.length() == 0) { + scope = ScopeProvider.instance.get(); + AnalysisLogger.getLogger().debug( + "In SampleOnTable->scope set by ScopeProvider: " + scope); + } else { + ScopeProvider.instance.set(scope); + } + } + + @Override + public String getDescription() { + return "Algorithm that allows to perform a sample operation on a table"; + } + + @Override + protected void process() throws Exception { + AnalysisLogger.getLogger().debug("In SampleOnTable->Processing"); + + try { + // retrieve information + List Info = retrieveInfo(); + + // check on table name field + tableName = getInputParameter("TableName"); + if(tableName != null){ + tableName = getInputParameter("TableName").trim(); + } + if ((tableName == null) || (tableName.equals(""))) { + throw new Exception("Warning: insert the table name"); + } + + // check on schema name field + if (driverInfo.toLowerCase().contains("postgres")) { + schemaName = getInputParameter("SchemaName"); + if(schemaName != null){ + schemaName = getInputParameter("SchemaName").trim(); + } + if ((schemaName == null) || (schemaName.equals(""))) { + throw new Exception("Warning: insert the schema name"); + } + } + + // create the connection + getConnection(Info); + + // sample operation on table + map = sampleOnTable(); + + } catch (HibernateException h) { + AnalysisLogger.getLogger().debug( + "In SampleOnTable-> ERROR " + h.getMessage()); + throw h; + } + + catch (IllegalStateException e) { + // e.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SampleOnTable-> ERROR " + e.getMessage()); + throw e; + + } catch (DiscoveryException e1) { + // e1.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SampleOnTable-> ERROR " + e1.getMessage()); + throw e1; + + } catch (InvalidResultException e2) { + // e2.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SampleOnTable-> ERROR " + e2.getMessage()); + throw e2; + + } catch (IOException e3) { + // e3.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SampleOnTable-> ERROR " + e3.getMessage()); + throw e3; + } + + catch (Exception e4) { + // e4.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SampleOnTable-> Exception " + e4.getMessage()); + throw e4; + + } finally { + // close the connection + mgt.closeConnection(); + } + } + + @Override + protected void setInputParameters() { + // parameters specified by the user + addStringInput("ResourceName", "The name of the resource", ""); + addStringInput("DatabaseName", "The name of the database", ""); + addStringInput("SchemaName", "The name of the schema", ""); + addStringInput("TableName", "The name of the table", ""); + } + + public StatisticalType getOutput() { + + AnalysisLogger.getLogger() + .debug("In SampleOnTable->retrieving outputs"); + + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(LinkedHashMap.class.getName(), + map, PrimitiveTypes.MAP, "ResultsMap"+UUID.randomUUID(), "Results Map"); + + return output; + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("In SampleOnTable->Shutdown"); + + } + + // Method that recovers the info useful for the connection + private List retrieveInfo() throws Exception, + IllegalStateException, DiscoveryException, InvalidResultException { + + resourceName = getInputParameter("ResourceName"); + + if (resourceName != null) { + resourceName = getInputParameter("ResourceName").trim(); + } + + if ((resourceName == null) || (resourceName.equals(""))) { + throw new Exception("Warning: insert the resource name"); + } + + databaseName = getInputParameter("DatabaseName"); + + if (databaseName != null) { + databaseName = getInputParameter("DatabaseName").trim(); + } + if ((databaseName == null) || (databaseName.equals(""))) { + throw new Exception("Warning: insert the database name"); + } + + // retrieve the chosen resource + DatabasesDiscoverer discovery = new DatabasesDiscoverer(); + List resources = discovery.discover(); + + AnalysisLogger.getLogger().debug( + "In SampleOnTable->number of elements: " + resources.size()); + + // list that contains information useful for the connection + List info = new ArrayList(); + + check: for (int i = 0; i < resources.size(); i++) { + if (resources.get(i).getResourceName().toLowerCase() + .equals(resourceName.toLowerCase())) { + normalizeDBInfo(resources.get(i)); + for (int j = 0; j < resources.get(i).getAccessPoints().size(); j++) { + + if (resources.get(i).getAccessPoints().get(j) + .getDatabaseName().toLowerCase() + .equals(databaseName.toLowerCase())) { + + info.add(resources.get(i).getAccessPoints().get(j) + .getUsername()); + AnalysisLogger.getLogger().debug( + "In SampleOnTable->username: " + + resources.get(i).getAccessPoints() + .get(j).getUsername()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getPassword()); + AnalysisLogger.getLogger().debug( + "In SampleOnTable->password: " + + resources.get(i).getAccessPoints() + .get(j).getPassword()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDriver()); + driverInfo = resources.get(i).getAccessPoints().get(j) + .getDriver(); + AnalysisLogger.getLogger().debug( + "In SampleOnTable->driver: " + + resources.get(i).getAccessPoints() + .get(j).getDriver()); + + // driverInfo = + // resources.get(i).getAccessPoints().get(j) + // .getDriver(); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDialect()); + AnalysisLogger.getLogger().debug( + "In SampleOnTable->dialect: " + + resources.get(i).getAccessPoints() + .get(j).getDialect()); + + info.add(resources.get(i).getAccessPoints().get(j) + .address()); + AnalysisLogger.getLogger().debug( + "In SampleOnTable->url: " + + resources.get(i).getAccessPoints() + .get(j).address()); + + info.add(databaseName); + AnalysisLogger.getLogger().debug( + "In SampleOnTable->databasename: " + + resources.get(i).getAccessPoints() + .get(j).getDatabaseName()); + break check; + } + } + } + } + + AnalysisLogger + .getLogger() + .debug("In SampleOnTable->information useful for connection: retrieved"); + + return info; + } + + // to normalize the information related to a database + private void normalizeDBInfo(DBResource resource) throws Exception { + + try{ + int ap = resource.getAccessPoints().size(); + + for (int i = 0; i < ap; i++) { + resource.normalize(i); + } + + }catch (Exception e) { + AnalysisLogger.getLogger().debug( + "In SampleOnTable->: Error in normalization process" + + e.getMessage()); + + throw e; + } + +// int ap = resource.getAccessPoints().size(); +// for (int i = 0; i < ap; i++) { +// try { +// resource.normalize(i); +// } catch (IOException e) { +// // e.printStackTrace(); +// AnalysisLogger.getLogger().debug( +// "In SampleOnTable->: Error in normalization process" +// + e.getMessage()); +// throw e; +// } +// } + } + + // create the database's connection + private void getConnection(List Info) throws IOException { + + // create the connection + Iterator iterator = Info.iterator(); + + String DatabaseUserName = iterator.next(); + String DatabasePassword = iterator.next(); + String DatabaseDriver = iterator.next(); + String DatabaseDialect = iterator.next(); + String DatabaseURL = iterator.next(); + String DatabaseName = iterator.next(); + + mgt.createConnection(DatabaseUserName, + DatabasePassword, DatabaseDriver, DatabaseDialect, DatabaseURL, + DatabaseName); + + AnalysisLogger.getLogger().debug( + "In SampleOnTable->database " + DatabaseName + ": connected"); + } + + // to perform the sample operation on the table + private LinkedHashMap sampleOnTable() + throws Exception { + + LinkedHashMap mapResults = new LinkedHashMap(); + AnalysisLogger.getLogger().debug( + "In SampleOnTable->starting the sample operation on table"); + + // sample on table operation + // List resultSet = null; + + if (driverInfo.toLowerCase().contains("postgres")) { + // for a postgres database the second parameter is the schema name + // resultSet = mgt.sampleOnTable(tableName, schemaName, + // config.getPersistencePath()); + mgt.sampleOnTable(tableName, schemaName, + config.getPersistencePath()); + } + + if (driverInfo.toLowerCase().contains("mysql")) { + // for a mysql database the second parameter is the database name + // resultSet = mgt.sampleOnTable(tableName, databaseName, + // config.getPersistencePath()); + mgt.sampleOnTable(tableName, databaseName, + config.getPersistencePath()); + } + + AnalysisLogger.getLogger().debug("In SampleOnTable->result retrieved"); + + // to add the results to the variable map + // to add the map + + HashMap mapResult = new HashMap(); + mapResult = mgt.getMapSampleTableResult(); + + String encoded = null; + encoded = new String(mapResult.get("HEADERS").getBytes(), "UTF-8"); + + // // check encoded value + // + // AnalysisLogger.getLogger().debug( + // "In SampleOnTable->string encoded: " + encoded); + + PrimitiveType val = new PrimitiveType(String.class.getName(), encoded, + PrimitiveTypes.STRING, "Row", "Row"); + mapResults.put("HEADERS", val); + + for (int i = 0; i < mapResult.size() - 1; i++) { + encoded = new String(mapResult.get(String.valueOf(i)).getBytes(), + "UTF-8"); + + // // check encoded value + // AnalysisLogger.getLogger().debug( + // "In SampleOnTable->string encoded: " + encoded); + + PrimitiveType val1 = new PrimitiveType(String.class.getName(), + encoded, PrimitiveTypes.STRING, "Row", "Row"); + mapResults.put(String.valueOf(i), val1); + // //check value contained in the map + // String value = (String) val1.getContent(); + // + // AnalysisLogger.getLogger().debug( + // "In SampleOnTable->value: " + value); + + } + + // to add the file + PrimitiveType fileResult = new PrimitiveType(File.class.getName(), + mgt.getFile(), PrimitiveTypes.FILE, "File", + "File"); + mapResults.put("File", fileResult); + + return mapResults; + + } +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SmartCorrectionEnum.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SmartCorrectionEnum.java new file mode 100644 index 0000000..e53e35d --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SmartCorrectionEnum.java @@ -0,0 +1,7 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +public enum SmartCorrectionEnum { + NONE, + POSTGRES, + MYSQL, +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SmartSampleOnTable.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SmartSampleOnTable.java new file mode 100644 index 0000000..0ac0d37 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SmartSampleOnTable.java @@ -0,0 +1,409 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.UUID; + +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataaccess.databases.access.DatabasesDiscoverer; +import org.gcube.dataaccess.databases.resources.DBResource; +import org.gcube.dataaccess.databases.utils.DatabaseManagement; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.gcube.resources.discovery.client.api.DiscoveryException; +import org.gcube.resources.discovery.client.api.InvalidResultException; +import org.hibernate.HibernateException; +import org.hibernate.SessionFactory; + +/** + * Class that allows to perform a smart sample operation on a table of a chosen + * database. It retrieves 100 rows of a table randomly that have the maximum + * number of columns not null. + */ + +public class SmartSampleOnTable extends StandardLocalExternalAlgorithm { + + private LinkedHashMap map = new LinkedHashMap(); + + // object that allows to manage some operations on a database + private DatabaseManagement mgt; + // database's parameters specified by the user + private String resourceName = null; + private String databaseName = null; + private String schemaName = null; + private String tableName = null; + + private SessionFactory sf; + // variable that keeps track of the driver information + private String driverInfo; + + @Override + public void init() throws Exception { + + mgt = new DatabaseManagement(config.getConfigPath()); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->Initialization"); + + String scope = config.getGcubeScope(); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->scope set by config object: " + scope); + + if (scope == null || scope.length() == 0) { + scope = ScopeProvider.instance.get(); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->scope set by ScopeProvider: " + + scope); + } else { + ScopeProvider.instance.set(scope); + } + } + + @Override + public String getDescription() { + return "Algorithm that allows to perform a smart sample operation on a table"; + } + + @Override + protected void process() throws Exception { + AnalysisLogger.getLogger().debug("In SmartSampleOnTable->Processing"); + + try { + + // retrieve information + List Info = retrieveInfo(); + + // check on table name field + tableName = getInputParameter("TableName"); + if(tableName != null){ + tableName = getInputParameter("TableName").trim(); + } + if ((tableName == null) || (tableName.equals(""))) { + throw new Exception("Warning: insert the table name"); + } + + // check on schema name field + if (driverInfo.toLowerCase().contains("postgres")) { + schemaName = getInputParameter("SchemaName"); + if(schemaName != null){ + schemaName = getInputParameter("SchemaName").trim(); + } + if ((schemaName == null) || (schemaName.equals(""))) { + throw new Exception("Warning: insert the schema name"); + } + } + + // create the connection + getConnection(Info); + + // smart sample operation on table + map = smartSampleOnTable(); + + } catch (HibernateException h) { + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable-> ERROR " + h.getMessage()); + throw h; + } + + catch (IllegalStateException e) { + // e.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable-> ERROR " + e.getMessage()); + throw e; + + } catch (DiscoveryException e1) { + // e1.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable-> ERROR " + e1.getMessage()); + throw e1; + + } catch (InvalidResultException e2) { + // e2.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable-> ERROR " + e2.getMessage()); + throw e2; + + } catch (IOException e3) { + // e3.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable-> ERROR " + e3.getMessage()); + throw e3; + } + + catch (Exception e4) { + // e4.printStackTrace(); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable-> Exception " + e4.getMessage()); + throw e4; + + } finally { + mgt.closeConnection(); + } + } + + @Override + protected void setInputParameters() { + // parameters specified by the user + addStringInput("ResourceName", "The name of the resource", ""); + addStringInput("DatabaseName", "The name of the database", ""); + addStringInput("SchemaName", "The name of the schema", ""); + addStringInput("TableName", "The name of the table", ""); + } + + public StatisticalType getOutput() { + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->retrieving outputs"); + + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(LinkedHashMap.class.getName(), + map, PrimitiveTypes.MAP, "ResultsMap"+UUID.randomUUID(), "Results Map"); + return output; + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("In SmartSampleOnTable->Shutdown"); + } + + // Method that recovers the info useful for the connection + private List retrieveInfo() throws Exception, + IllegalStateException, DiscoveryException, InvalidResultException { + + resourceName = getInputParameter("ResourceName"); + + if (resourceName != null) { + resourceName = getInputParameter("ResourceName").trim(); + } + + if ((resourceName == null) || (resourceName.equals(""))) { + throw new Exception("Warning: insert the resource name"); + } + + databaseName = getInputParameter("DatabaseName"); + + if (databaseName != null) { + databaseName = getInputParameter("DatabaseName").trim(); + } + if ((databaseName == null) || (databaseName.equals(""))) { + throw new Exception("Warning: insert the database name"); + } + + // retrieve the chosen resource + DatabasesDiscoverer discovery = new DatabasesDiscoverer(); + List resources = discovery.discover(); + + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->number of elements: " + + resources.size()); + + // list that contains information useful for the connection + List info = new ArrayList(); + + check: for (int i = 0; i < resources.size(); i++) { + + if (resources.get(i).getResourceName().toLowerCase() + .equals(resourceName.toLowerCase())) { + + normalizeDBInfo(resources.get(i)); + + for (int j = 0; j < resources.get(i).getAccessPoints().size(); j++) { + + if (resources.get(i).getAccessPoints().get(j) + .getDatabaseName().toLowerCase() + .equals(databaseName.toLowerCase())) { + + info.add(resources.get(i).getAccessPoints().get(j) + .getUsername()); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->username: " + + resources.get(i).getAccessPoints() + .get(j).getUsername()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getPassword()); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->password: " + + resources.get(i).getAccessPoints() + .get(j).getPassword()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDriver()); + driverInfo = resources.get(i).getAccessPoints().get(j) + .getDriver(); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->driver: " + + resources.get(i).getAccessPoints() + .get(j).getDriver()); + + // driverInfo = + // resources.get(i).getAccessPoints().get(j) + // .getDriver(); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDialect()); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->dialect: " + + resources.get(i).getAccessPoints() + .get(j).getDialect()); + + info.add(resources.get(i).getAccessPoints().get(j) + .address()); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->url: " + + resources.get(i).getAccessPoints() + .get(j).address()); + + info.add(databaseName); + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->databasename: " + + resources.get(i).getAccessPoints() + .get(j).getDatabaseName()); + break check; + } + } + } + } + + AnalysisLogger + .getLogger() + .debug("In SmartSampleOnTable->information useful for connection: retrieved"); + return info; + } + + // to normalize the information related to a database + private void normalizeDBInfo(DBResource resource) throws Exception { + + try{ + int ap = resource.getAccessPoints().size(); + + for (int i = 0; i < ap; i++) { + resource.normalize(i); + } + + }catch (Exception e) { + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->: Error in normalization process" + + e.getMessage()); + + throw e; + } + +// int ap = resource.getAccessPoints().size(); +// for (int i = 0; i < ap; i++) { +// try { +// resource.normalize(i); +// } catch (IOException e) { +// // e.printStackTrace(); +// AnalysisLogger.getLogger().debug( +// "In SmartSampleOnTable->: Error in normalization process" +// + e.getMessage()); +// throw e; +// } +// } + } + + // create the database's connection + private void getConnection(List Info) throws IOException { + + // create the connection + Iterator iterator = Info.iterator(); + + String DatabaseUserName = iterator.next(); + String DatabasePassword = iterator.next(); + String DatabaseDriver = iterator.next(); + String DatabaseDialect = iterator.next(); + String DatabaseURL = iterator.next(); + String DatabaseName = iterator.next(); + + mgt.createConnection(DatabaseUserName, + DatabasePassword, DatabaseDriver, DatabaseDialect, DatabaseURL, + DatabaseName); + + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->database " + DatabaseName + + ": connected"); + } + + // to perform the sample operation on the table + private LinkedHashMap smartSampleOnTable() + throws Exception { + + LinkedHashMap mapResults = new LinkedHashMap(); + + AnalysisLogger + .getLogger() + .debug("In SmartSampleOnTable->starting the smart sample operation on table"); + + // sample on table operation + // List resultSet = null; + + if (driverInfo.toLowerCase().contains("postgres")) { + // for a postgres database the second parameter is the schema name + // resultSet = mgt.smartSampleOnTable(tableName, schemaName, + // config.getPersistencePath()); + mgt.smartSampleOnTable(tableName, schemaName, + config.getPersistencePath()); + } + + if (driverInfo.toLowerCase().contains("mysql")) { + // for a mysql database the second parameter is the database name + // resultSet = mgt.smartSampleOnTable(tableName, databaseName, + // config.getPersistencePath()); + mgt.smartSampleOnTable(tableName, databaseName, + config.getPersistencePath()); + } + + AnalysisLogger.getLogger().debug( + "In SmartSampleOnTable->result retrieved"); + + // to add the results to the variable map + // to add the map + HashMap mapResult = new HashMap(); + mapResult = mgt.getMapSampleTableResult(); + + String encoded = null; + encoded = new String(mapResult.get("HEADERS").getBytes(), "UTF-8"); + + // //check encoded value + // AnalysisLogger.getLogger().debug( + // "In SmartSampleOnTable->string encoded: " + encoded); + + PrimitiveType val = new PrimitiveType(String.class.getName(), encoded, + PrimitiveTypes.STRING, "Row", "Row"); + mapResults.put("HEADERS", val); + + for (int i = 0; i < mapResult.size() - 1; i++) { + encoded = new String(mapResult.get(String.valueOf(i)).getBytes(), + "UTF-8"); + + // // check encoded value + // AnalysisLogger.getLogger().debug( + // "In SmartSampleOnTable->string encoded: " + encoded); + + PrimitiveType val1 = new PrimitiveType(String.class.getName(), + encoded, PrimitiveTypes.STRING, "Row", "Row"); + mapResults.put(String.valueOf(i), val1); + // //check value + // String value = (String) val1.getContent(); + // + // AnalysisLogger.getLogger().debug( + // "In SmartSampleOnTable->value: " + value); + + } + + // to add the file + PrimitiveType fileResult = new PrimitiveType(File.class.getName(), + mgt.getFile(), PrimitiveTypes.FILE, "File", + "File"); + mapResults.put("File", fileResult); + + return mapResults; + } +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SubmitQuery.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SubmitQuery.java new file mode 100644 index 0000000..b373b1b --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SubmitQuery.java @@ -0,0 +1,691 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +import java.io.File; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +import org.apache.commons.httpclient.UsernamePasswordCredentials; +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataaccess.databases.access.DatabasesDiscoverer; +import org.gcube.dataaccess.databases.lexer.MySQLLexicalAnalyzer; +import org.gcube.dataaccess.databases.lexer.PostgresLexicalAnalyzer; +import org.gcube.dataaccess.databases.resources.DBResource; +import org.gcube.dataaccess.databases.utils.DatabaseManagement; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.gcube.resources.discovery.client.api.DiscoveryException; +import org.gcube.resources.discovery.client.api.InvalidResultException; +import org.hibernate.HibernateException; +import org.hibernate.SessionFactory; + +import com.adventnet.swissqlapi.sql.exception.ConvertException; +import com.adventnet.swissqlapi.sql.parser.ParseException; + +/** + * Class that allows to submit a query. It retrieves results in a file and in a + * map. + */ +public class SubmitQuery extends StandardLocalExternalAlgorithm { + + static long maximum_execution_time = 30*60*1000; //time to stop execution query + private LinkedHashMap map = new LinkedHashMap(); + // object that allows to manage some operations on a database + private DatabaseManagement mgt; + // variable that keeps track of the database's type + private String driverInfo; + + private Connection dbconnection; + // database's parameters specified by the user + private String resourceName = null; + private String databaseName = null; + private String schemaName = null; + private String tableName = null; + private String query = null; + + private String valueReadOnly = "Read-Only Query"; + private String smartCorrection = "Apply Smart Correction"; + private String dialect = "Language"; + + private String valueRO; + private String valueSC; + private String valueDialect = ""; + + // variable used to filter the disallowed queries + private boolean NotAllowedQuery = false; + + //class for the timer to stop execution query + private class ExecutionStopper extends TimerTask { + @Override + public void run() { + AnalysisLogger.getLogger().debug("ExecutionStopper: Stopping execution"); + shutdown(); + } + } + + + @Override + public void init() throws Exception { + + mgt = new DatabaseManagement(config.getConfigPath()); + AnalysisLogger.getLogger().debug("In SubmitQuery->Initialization"); + + String scope = config.getGcubeScope(); + AnalysisLogger.getLogger().debug( + "In SubmitQuery->scope set by config object: " + scope); + + if (scope == null || scope.length() == 0) { + scope = ScopeProvider.instance.get(); + AnalysisLogger.getLogger().debug( + "In SubmitQuery->scope set by ScopeProvider: " + scope); + } else { + ScopeProvider.instance.set(scope); + } + + valueRO = config.getParam(valueReadOnly); + valueSC = config.getParam(smartCorrection); + } + + @Override + public String getDescription() { + return "Algorithm that allows to submit a query"; + } + + @Override + protected void process() throws Exception, IOException, + IllegalStateException, DiscoveryException, InvalidResultException, + HibernateException { + + AnalysisLogger.getLogger().debug("In SubmitQuery->Processing"); + + Timer stopper = new Timer(); + stopper.schedule(new ExecutionStopper(),maximum_execution_time); + + try { + // retrieve information + List Info = retrieveInfo(); + + // create the connection + dbconnection = getConnection(Info); + + // submit a query + map = submitQuery(); + +// // close the connection +// dbconnection.close(); + + } catch (HibernateException h) { + + // AnalysisLogger.getLogger().debug( + // "In SubmitQuery-> ERROR " + h.getMessage()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery-> " + h.getMessage()); + throw h; + } + + catch (IllegalStateException e) { + // e.printStackTrace(); + + // AnalysisLogger.getLogger().debug( + // "In SubmitQuery-> ERROR " + e.getMessage()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery-> " + e.getMessage()); + throw e; + + } catch (DiscoveryException e1) { + // e1.printStackTrace(); + + // AnalysisLogger.getLogger().debug( + // "In SubmitQuery-> ERROR " + e1.getMessage()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery-> " + e1.getMessage()); + throw e1; + + } catch (InvalidResultException e2) { + // e2.printStackTrace(); + + // AnalysisLogger.getLogger().debug( + // "In SubmitQuery-> ERROR " + e2.getMessage()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery-> " + e2.getMessage()); + throw e2; + + } catch (IOException e3) { + // e3.printStackTrace(); + + // AnalysisLogger.getLogger().debug( + // "In SubmitQuery-> ERROR " + e3.getMessage()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery-> " + e3.getMessage()); + throw e3; + } + + catch (Exception e4) { + // e4.printStackTrace(); + + // AnalysisLogger.getLogger().debug( + // "In SubmitQuery-> Exception " + e4.getMessage()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery-> " + e4.getMessage()); + throw e4; + + } finally { + if (dbconnection!=null) { + dbconnection.close(); + AnalysisLogger.getLogger().debug("In SubmitQuery-> Connection closed"); + dbconnection=null; + } + //remove the timer if the execution query has already terminated + if (stopper!=null){ + try{ + stopper.cancel(); + stopper.purge(); + AnalysisLogger.getLogger().debug("In SubmitQuery-> Execution stopper terminated"); + }catch(Exception e){ + AnalysisLogger.getLogger().debug("In SubmitQuery-> Could not stop execution stopper "+e.getMessage() ); + } + } + } + } + + public StatisticalType getOutput() { + + AnalysisLogger.getLogger().debug("In SubmitQuery->retrieving outputs"); + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(LinkedHashMap.class.getName(), + map, PrimitiveTypes.MAP, "ResultsMap"+UUID.randomUUID(), "Results Map"); + return output; + } + + public List getInputParameters() { + List parameters = new ArrayList(); + + // parameters specified by the user + PrimitiveType p0 = new PrimitiveType(String.class.getName(), "", + PrimitiveTypes.STRING, "ResourceName", + "The name of the resource"); + + PrimitiveType p1 = new PrimitiveType(String.class.getName(), "", + PrimitiveTypes.STRING, "DatabaseName", + "The name of the database"); + + PrimitiveType p2 = new PrimitiveType(Boolean.class.getName(), null, + PrimitiveTypes.BOOLEAN, valueReadOnly, + "Check the box if the query must be read-only", "true"); + + PrimitiveType p3 = new PrimitiveType(Boolean.class.getName(), null, + PrimitiveTypes.BOOLEAN, smartCorrection, + "Check the box for smart correction", "true"); + + // addEnumerateInput(SmartCorrectionEnum.values(), dialect, "Language", + // ""); + PrimitiveType p4 = new PrimitiveType(Enum.class.getName(), + SmartCorrectionEnum.values(), PrimitiveTypes.ENUMERATED, + dialect, "Language", SmartCorrectionEnum.NONE.name()); + + PrimitiveType p5 = new PrimitiveType(String.class.getName(), "", + PrimitiveTypes.STRING, "Query", "query"); + + parameters.add(p0); + parameters.add(p1); + parameters.add(p2); + parameters.add(p3); + parameters.add(p4); + parameters.add(p5); + + return parameters; + + } + + @Override + protected void setInputParameters() { + + // AnalysisLogger.getLogger().debug("In SubmitQuery->setting inputs"); + + // parameters specified by the user + // addStringInput("ResourceName", "The name of the resource", ""); + // addStringInput("DatabaseName", "The name of the database", ""); + + // PrimitiveType p2 = new PrimitiveType(Boolean.class.getName(), null, + // PrimitiveTypes.BOOLEAN, valueReadOnly, + // "Check the box if the query must be read-only","true"); + + // addEnumerateInput(SubmitQueryEnum.values(), valueReadOnly, + // "Check the box if the query must be read-only", + // SubmitQueryEnum.TRUE.name()); + // addStringInput("SchemaName", "The name of the schema", ""); + // addStringInput("TableName", "The name of the table", ""); + + // PrimitiveType p3 = new PrimitiveType(Boolean.class.getName(), null, + // PrimitiveTypes.BOOLEAN, smartCorrection, + // "Check the box for smart correction","true"); + // List parameters = new ArrayList(); + // parameters.add(p2); + // parameters.add(p3); + + // addEnumerateInput( + // SubmitQueryEnum.values(), + // smartCorrection, + // "Check the box for smart correction", + // SubmitQueryEnum.TRUE.name()); + + // addEnumerateInput(SmartCorrectionEnum.values(), dialect, "Language)", + // SmartCorrectionEnum.POSTGRES.name()); + + // addEnumerateInput(SmartCorrectionEnum.values(), dialect, "Language", + // ""); + // addEnumerateInput(SmartCorrectionEnum.values(), dialect, "Language", + // ""); + + // addStringInput("Query", "query", ""); + + } + + @Override + public void shutdown() { + + AnalysisLogger.getLogger().debug("In SubmitQuery->Shutdown"); + try{ + if (dbconnection!=null) { + dbconnection.close(); + AnalysisLogger.getLogger().debug("In SubmitQuery-> Connection closed"); + dbconnection=null; + } + }catch(Exception e){ + AnalysisLogger.getLogger().debug("In SubmitQuery->Unable to close connection "+e.getMessage()); + } + } + + // Method that recovers the info useful for the connection + private List retrieveInfo() throws Exception, + IllegalStateException, DiscoveryException, InvalidResultException { + + resourceName = getInputParameter("ResourceName"); + + if (resourceName != null) { + resourceName = getInputParameter("ResourceName").trim(); + } + + if ((resourceName == null) || (resourceName.equals(""))) { + throw new Exception("Warning: insert the resource name"); + } + + databaseName = getInputParameter("DatabaseName"); + + if (databaseName != null) { + databaseName = getInputParameter("DatabaseName").trim(); + } + if ((databaseName == null) || (databaseName.equals(""))) { + throw new Exception("Warning: insert the database name"); + } + + // retrieve the chosen resource + DatabasesDiscoverer discovery = new DatabasesDiscoverer(); + List resources = discovery.discover(); + AnalysisLogger.getLogger().debug( + "In SubmitQuery->number of elements: " + resources.size()); + + // list that contains information useful for the connection + List info = new ArrayList(); + + check: for (int i = 0; i < resources.size(); i++) { + if (resources.get(i).getResourceName().toLowerCase() + .equals(resourceName.toLowerCase())) { + normalizeDBInfo(resources.get(i)); + for (int j = 0; j < resources.get(i).getAccessPoints().size(); j++) { + + if (resources.get(i).getAccessPoints().get(j) + .getDatabaseName().toLowerCase() + .equals(databaseName.toLowerCase())) { + + info.add(resources.get(i).getAccessPoints().get(j) + .getUsername()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery->username: " + + resources.get(i).getAccessPoints() + .get(j).getUsername()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getPassword()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery->password: " + + resources.get(i).getAccessPoints() + .get(j).getPassword()); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDriver()); + driverInfo = resources.get(i).getAccessPoints().get(j) + .getDriver(); + AnalysisLogger.getLogger().debug( + "In SubmitQuery->driver: " + + resources.get(i).getAccessPoints() + .get(j).getDriver()); + + // driverInfo = + // resources.get(i).getAccessPoints().get(j) + // .getDriver(); + + info.add(resources.get(i).getAccessPoints().get(j) + .getDialect()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery->dialect: " + + resources.get(i).getAccessPoints() + .get(j).getDialect()); + + info.add(resources.get(i).getAccessPoints().get(j) + .address()); + AnalysisLogger.getLogger().debug( + "In SubmitQuery->url: " + + resources.get(i).getAccessPoints() + .get(j).address()); + + info.add(databaseName); + AnalysisLogger.getLogger().debug( + "In SubmitQuery->databasename: " + + resources.get(i).getAccessPoints() + .get(j).getDatabaseName()); + + break check; + } + } + } + } + + AnalysisLogger.getLogger().debug( + "In SubmitQuery->information useful for connection: retrieved"); + return info; + } + + // create the database's connection + private Connection getConnection(List Info) throws Exception { + + // create the connection + Iterator iterator = Info.iterator(); + + String DatabaseUserName = iterator.next(); + String DatabasePassword = iterator.next(); + String DatabaseDriver = iterator.next(); + String DatabaseDialect = iterator.next(); + String DatabaseURL = iterator.next(); + String DatabaseName = iterator.next(); + + // Load the database driver + Class.forName(DatabaseDriver) ; + // Get a connection to the database + Connection conn = DriverManager.getConnection(DatabaseURL,DatabaseUserName,DatabasePassword) ; + if (conn!=null){ + AnalysisLogger.getLogger().debug( + "In SubmitQuery->database " + DatabaseName + ": connected"); + } + return conn; + } + + // Method that allows to submit a query + private LinkedHashMap submitQuery() + throws Exception, ParseException, ConvertException { + + // LinkedHashMap results = new + // LinkedHashMap(); + + LinkedHashMap mapResults = new LinkedHashMap(); + + query = getInputParameter("Query"); + if ((query == null) || (query.equals(""))) { + throw new Exception("Warning: insert the query"); + } + + // analyze the query to filter it if it is not read-only compliant + // String valueRO = getInputParameter(valueReadOnly); + + // //print check + AnalysisLogger.getLogger().debug("In SubmitQuery->valueRO: " + valueRO); + + if (valueRO.equals("true")) { + AnalysisLogger.getLogger().debug( + "In SubmitQuery->Analyzing the query: " + query); + NotAllowedQuery = analyzeQuery(query); + + // //print check + // AnalysisLogger.getLogger().debug( + // "In SubmitQuery->NotAllowedQuery valueRO: " + NotAllowedQuery); + } + + if (NotAllowedQuery == false) { + + // formatWithQuotes(query); + + // submit query + List result = new ArrayList(); + + // path file + // AnalysisLogger.getLogger() + // .debug("In SubmitQuery->path file: " + // + config.getPersistencePath()); + + // if user specifies to use the smart correction a translation in + // applied on the query + // String valueSC = getInputParameter(smartCorrection); + + // //print check + AnalysisLogger.getLogger().debug( + "In SubmitQuery->valueSC: " + valueSC); + + // dialect to which a query is converted + // String valueDialect = getInputParameter(dialect); + valueDialect = getInputParameter(dialect); + + // //print check + AnalysisLogger.getLogger().debug( + "In SubmitQuery->valueDialect: " + valueDialect); + + if ((valueSC.equals("true")) && (!(valueDialect.equals("NONE")))) { + String smartCorrectedQuery = ""; + + AnalysisLogger.getLogger().debug( + "In SubmitQuery->applying smart correction on the query: " + + query); + + if (valueDialect.equals("POSTGRES")) { + + // //print check + // AnalysisLogger.getLogger().debug( + // "In SubmitQuery->query: " + query); + // + // AnalysisLogger.getLogger().debug( + // "In SubmitQuery->dialect: " + + // DatabaseManagement.POSTGRESQLDialect); + + // call the SwisSQL library functionality + smartCorrectedQuery = mgt.smartCorrectionOnQuery(query, + DatabaseManagement.POSTGRESQLDialect); + } + + if (valueDialect.equals("MYSQL")) { + // call the SwisSQL library functionality + smartCorrectedQuery = mgt.smartCorrectionOnQuery(query, + DatabaseManagement.MYSQLDialect); + } + + AnalysisLogger.getLogger().debug( + "In SubmitQuery-> query converted: " + + smartCorrectedQuery); + query = smartCorrectedQuery; + + if (!(smartCorrectedQuery.equals(""))) { + PrimitiveType valQuery = new PrimitiveType( + String.class.getName(), smartCorrectedQuery, + PrimitiveTypes.STRING, "Converted Query", + "Query Converted"); + + mapResults.put("Query Converted", valQuery); + } + } + + // else if ((valueSC.equals("true")) && + // (valueDialect.equals("NONE"))) { + // + // throw new Exception("Warning: specify the language"); + // + // } + + AnalysisLogger.getLogger().debug( + "In SubmitQuery->Submitting the query: " + query); + + if (driverInfo.toLowerCase().contains("postgres")) { + + // for a postgres database the second parameter is the + // schema + // name + + // result = mgt.submitQuery(query, tableName, schemaName, + // sf, config.getPersistencePath()); + + result = mgt + .submitQuery(query, dbconnection, config.getPersistencePath()); + } + + if (driverInfo.toLowerCase().contains("mysql")) { + // for a mysql database the second parameter is the database + // name + + // result = mgt.submitQuery(query, tableName, databaseName, + // sf, config.getPersistencePath()); + + result = mgt + .submitQuery(query, dbconnection, config.getPersistencePath()); + } + + if (result == null) { + throw new Exception("Warning: the table has not rows"); + } + + AnalysisLogger.getLogger().debug( + "In SubmitQuery->Query's Result retrieved"); + + HashMap mapResult = new HashMap(); + mapResult = mgt.getMapQueryResult(); +// System.out.println("map size alg with header: " + mapResult.size()); + + String encoded = null; + encoded = new String(mapResult.get("HEADERS").getBytes(), "UTF-8"); + + // // check the encoded value + // AnalysisLogger.getLogger().debug( + // "In RandomSampleOnTable->string encoded: " + encoded); + + PrimitiveType val = new PrimitiveType(String.class.getName(), + encoded, PrimitiveTypes.STRING, "Row", "Row"); + + mapResults.put("HEADERS", val); + + // to add the rows (result of the query) + for (int i = 0; i < mapResult.size() - 1; i++) { + encoded = new String(mapResult.get(String.valueOf(i)) + .getBytes(), "UTF-8"); + + // // check the encoded value +// AnalysisLogger.getLogger().debug( +// "In RandomSampleOnTable->string encoded: " + encoded); + + PrimitiveType val1 = new PrimitiveType(String.class.getName(), + encoded, PrimitiveTypes.STRING, "Row", "Row"); + mapResults.put(String.valueOf(i), val1); + // //check value contained in map + // String value = (String) val1.getContent(); + // +// AnalysisLogger.getLogger().debug( +// "In RandomSampleOnTable->value: " + value); + } + + // to add the file + PrimitiveType fileResult = new + PrimitiveType(File.class.getName(), + mgt.getFile(), PrimitiveTypes.FILE, "File", + "File"); + mapResults.put("File", fileResult); + +// //to add the number of total rows for a result of a submit query operation + PrimitiveType totalRows = new PrimitiveType(String.class.getName(), + String.valueOf(mgt.getSubmitQueryTotalRows()), PrimitiveTypes.STRING, "Total Rows", + "Total Rows"); + mapResults.put("Total Rows", totalRows); + + } + return mapResults; + } + + // method that allows to analyze the query in order to filter it if it is + // not read-only compliant + private boolean analyzeQuery(String query) throws Exception { + boolean NotAllowed = false; + // check if the query is allowed + + // TODO: check also the oracle case + if (driverInfo.toLowerCase().contains("postgres")) { + PostgresLexicalAnalyzer obj = new PostgresLexicalAnalyzer(); + NotAllowed = obj.analyze(query); + } + if (driverInfo.toLowerCase().contains("mysql")) { + MySQLLexicalAnalyzer obj = new MySQLLexicalAnalyzer(); + NotAllowed = obj.analyze(query); + } + + AnalysisLogger.getLogger().debug( + "In SubmitQuery->Warning: query filtered: " + NotAllowed); + return NotAllowed; + } + + private void normalizeDBInfo(DBResource resource) throws Exception { + + + try{ + int ap = resource.getAccessPoints().size(); + + for (int i = 0; i < ap; i++) { + resource.normalize(i); + } + + }catch (Exception e) { + AnalysisLogger.getLogger().debug( + "In SubmitQuery->: Error in normalization process" + + e.getMessage()); + + throw e; + } + +// int ap = resource.getAccessPoints().size(); +// for (int i = 0; i < ap; i++) { +// try { +// resource.normalize(i); +// } catch (IOException e) { +// // e.printStackTrace(); +// AnalysisLogger.getLogger().debug( +// "In SubmitQuery->: Error in normalization process" +// + e.getMessage()); +// throw e; +// } +// } + } + +// private void formatWithQuotes(String Query) { +// if (driverInfo.toLowerCase().contains("postgres")) { +// if (Query.contains(tableName)) { +// query = Query.replaceAll(tableName, "\"" + tableName + "\""); +// } +// if (driverInfo.toLowerCase().contains("mysql")) { +// query = Query.replaceAll(tableName, "\"" + tableName + "\""); +// } +// } +// } +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SubmitQueryEnum.java b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SubmitQueryEnum.java new file mode 100644 index 0000000..9a914f4 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/drmalgorithms/SubmitQueryEnum.java @@ -0,0 +1,6 @@ +package org.gcube.dataaccess.algorithms.drmalgorithms; + +public enum SubmitQueryEnum { + TRUE, + FALSE +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/examples/AbsoluteSpeciesBarChartsAlgorithm.java b/src/main/java/org/gcube/dataaccess/algorithms/examples/AbsoluteSpeciesBarChartsAlgorithm.java new file mode 100644 index 0000000..f9e882b --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/examples/AbsoluteSpeciesBarChartsAlgorithm.java @@ -0,0 +1,358 @@ +package org.gcube.dataaccess.algorithms.examples; + +import java.awt.Image; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.gcube.contentmanagement.graphtools.data.conversions.ImageTools; +import org.gcube.contentmanagement.graphtools.plotting.graphs.HistogramGraph; +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; +import org.jfree.chart.JFreeChart; +import org.jfree.data.category.DefaultCategoryDataset; + +public class AbsoluteSpeciesBarChartsAlgorithm extends + StandardLocalExternalAlgorithm { + + LinkedHashMap map = new LinkedHashMap(); + + static String databaseName = "DatabaseName"; + static String userParameterName = "DatabaseUserName"; + static String passwordParameterName = "DatabasePassword"; + static String urlParameterName = "DatabaseURL"; + + // static String databaseName = "Obis2Repository"; + // static String userParameterName = "postgres"; + // static String passwordParameterName = "0b1s@d4sc13nc3"; + // static String urlParameterName = + // "jdbc:postgresql://obis2.i-marine.research-infrastructures.eu:5432/obis"; + + protected String fileName; + BufferedWriter out; + private String firstSpeciesNumber = " SpeciesNumber :"; + private String yearStart = "Start year :"; + private String yearEnd = "End year :"; + private int speciesNumber; + String databaseJdbc; + String year_start; + String year_end; + String databaseUser; + String databasePwd; + private Connection connection = null; + private DefaultCategoryDataset defaultcategorydataset; + + @Override + public void init() throws Exception { + AnalysisLogger.getLogger().debug("Initialization"); + } + + @Override + public String getDescription() { + return ": A transducer algorithm that produces the list of top n most observed taxa, i.e. the species taxa having the largest number of occurrence records, in the OBIS database in a given time interval"; + } + + public void fulfilParameters() { + + AnalysisLogger.getLogger().debug("fulfilParameters method"); + + // String tmp = getInputParameter(firstSpeciesNumber); + + List list = getInputParameters(); + + System.out.println("size: " + list.size()); + + for (int i = 0; i < list.size(); i++) { + + System.out.println(list.get(i).getName()+" "+list.get(i).getDefaultValue()); + + if (list.get(i).getName().equals(firstSpeciesNumber)) { + // System.out.println(list.get(i).getName()); + String tmp = list.get(i).getDefaultValue(); + speciesNumber = Integer.parseInt(tmp); + + } + + if (list.get(i).getName().equals(yearStart)) { + + year_start = list.get(i).getDefaultValue(); + + } + + if (list.get(i).getName().equals(yearEnd)) { + + year_end = list.get(i).getDefaultValue(); + + } +// if (list.get(i).getName().equals(urlParameterName)) { +// +// databaseJdbc = list.get(i).getDefaultValue(); +// +// } +// if (list.get(i).getName().equals(userParameterName)) { +// +// databaseUser = list.get(i).getDefaultValue(); +// +// } +// if (list.get(i).getName().equals(passwordParameterName)) { +// +// databasePwd = list.get(i).getDefaultValue(); +// +// } + + databaseJdbc = getInputParameter("DatabaseURL"); + databaseUser= getInputParameter("DatabaseUserName"); + databasePwd= getInputParameter("DatabasePassword"); + + + } + + // System.out.println(tmp); + +// databaseJdbc = getInputParameter(urlParameterName); + // year_start = getInputParameter(yearStart); +// year_end = getInputParameter(yearEnd); +// databaseUser = getInputParameter(userParameterName); +// databasePwd = getInputParameter(passwordParameterName); + +// fileName = super.config.getPersistencePath() + "results.csv"; + + fileName = config.getConfigPath() + "results.csv"; + +// fileName = "./cfg/" + "results.csv"; + + + AnalysisLogger.getLogger().debug("Percorso file: " + fileName); + + AnalysisLogger.getLogger().debug("fulfilParameters method"); + } + + private ResultSet performeQuery() throws SQLException { + + connection = DriverManager.getConnection(databaseJdbc, databaseUser, + databasePwd); + + Statement stmt = connection.createStatement(); + String query = "SELECT tname, sum(count)AS count FROM public.count_species_per_year WHERE year::integer >=" + + year_start + + "AND year::integer <=" + + year_end + + "GROUP BY tname ORDER BY count desc;"; + return stmt.executeQuery(query); + } + + @Override + protected void process() throws Exception { + + + + System.out.println("In the process"); + + defaultcategorydataset = new DefaultCategoryDataset(); +// String driverName = "org.postgresql.Driver"; +// Class driverClass = Class.forName(driverName); +// Driver driver = (Driver) driverClass.newInstance(); + + System.out.println("pre fulfill"); + fulfilParameters(); + System.out.println("post fulfill"); + +// String tmp = getInputParameter(firstSpeciesNumber); +// System.out.println("process-> speciesnumber value: " + tmp); + + // String tmp="10"; +// speciesNumber = Integer.parseInt(tmp); + +// year_start = getInputParameter(yearStart); + // year_start="1800"; + +// year_end = getInputParameter(yearEnd); + // year_end="2020"; + + // fileName = super.config.getPersistencePath() + "results.csv"; + +// fileName = "results.csv"; + + out = new BufferedWriter(new FileWriter(fileName)); + + System.out.println("pre query"); + ResultSet rs = performeQuery(); + System.out.println("post query"); + + // connection = + // DriverManager.getConnection("jdbc:postgresql://obis2.i-marine.research-infrastructures.eu:5432/obis", + // "postgres", + // "0b1s@d4sc13nc3"); + // Statement stmt = connection.createStatement(); + // String query = + // "SELECT tname, sum(count)AS count FROM public.count_species_per_year WHERE year::integer >=" + // + year_start + // + "AND year::integer <=" + // + year_end + // + "GROUP BY tname ORDER BY count desc;"; + + // + // System.out.println("pre query"); + // ResultSet rs=stmt.executeQuery(query); + // + // System.out.println("post query"); + // + int i = 0; + String s = "Species"; + while (rs.next() && i < speciesNumber) { + + System.out.println(rs.toString()); + + String tname = rs.getString("tname"); + String count = rs.getString("count"); + + System.out.println("tname:" + tname); + + System.out.println("count:" + count); + + write(tname + "," + count); + int countOcc = Integer.parseInt(count); + + PrimitiveType val = new PrimitiveType(String.class.getName(), + count, PrimitiveTypes.STRING, tname, tname); + + + if (i < 100) + map.put(tname, val); + if (i < 16) + defaultcategorydataset.addValue(countOcc, s, tname); + i++; + + } + out.close(); + connection.close(); + + } + + @Override + protected void setInputParameters() { + + System.out.println("Sono in SetParameters"); + + addStringInput( + firstSpeciesNumber, + "Number of species to report (max 17 will be visualized on the chart)", + "10"); + + // System.out.println(firstSpeciesNumber); + + addStringInput(yearStart, "Starting year of the analysis", "1800"); + // System.out.println(yearStart); + + addStringInput(yearEnd, "Ending year of the analysis", "2020"); + // System.out.println(yearEnd); + + // addRemoteDatabaseInput("Obis2Repository", urlParameterName, + // userParameterName, passwordParameterName, "driver", "dialect"); + + // addRemoteDatabaseInput("Obis2Repository", urlParameterName, + // userParameterName, passwordParameterName, "org.postgresql.Driver", + // "org.hibernate.dialect.PostgreSQLDialect"); + + System.out.println("pre addRemoteDB"); +// addRemoteDatabaseInput( +// "Obis2Repository", +// "jdbc:postgresql://obis2.i-marine.research-infrastructures.eu:5432/obis", +// "postgres", "0b1s@d4sc13nc3", "org.postgresql.Driver", +// "org.hibernate.dialect.PostgreSQLDialect"); + +// addRemoteDatabaseInput("Obis2Repository", urlParameterName, +// userParameterName, passwordParameterName, "driver", "dialect"); + + + System.out.println("post addRemoteDB"); + + // super.config.setConfigPath("./cfg/"); + // config.setConfigPath(); + + // super.config.setParam("DatabaseUserName","gcube"); + // super.config.setParam("DatabasePassword","d4science2"); + // super.config.setParam("DatabaseURL","jdbc:postgresql://obis2.i-marine.research-infrastructures.eu:5432/obis"); + // super.config.setParam("DatabaseDriver","org.postgresql.Driver"); + + // System.out.println("URL: "+ super.config.getDatabaseURL()); + + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("Shutdown"); + } + + @Override + public StatisticalType getOutput() { + + AnalysisLogger.getLogger().debug("In getOutput"); + + PrimitiveType p = new PrimitiveType(Map.class.getName(), + PrimitiveType.stringMap2StatisticalMap(outputParameters), + PrimitiveTypes.MAP, "Discrepancy Analysis", ""); + + + AnalysisLogger + .getLogger() + .debug("MapsComparator: Producing Gaussian Distribution for the errors"); + // build image: + HashMap producedImages = new HashMap(); + + JFreeChart chart = HistogramGraph + .createStaticChart(defaultcategorydataset); + Image image = ImageTools.toImage(chart.createBufferedImage(680, 420)); + + producedImages.put("Species Observations", image); + + PrimitiveType images = new PrimitiveType(HashMap.class.getName(), + producedImages, PrimitiveTypes.IMAGES, "ErrorRepresentation", + "Graphical representation of the error spread"); + // PrimitiveType images = new PrimitiveType("Species Observations", + // producedImages, PrimitiveTypes.IMAGES, "ErrorRepresentation", + // "Graphical representation of the error spread"); + PrimitiveType f = new PrimitiveType(File.class.getName(), new File( + fileName), PrimitiveTypes.FILE, "OccFile", "OccFile"); + // end build image + AnalysisLogger.getLogger().debug( + "Bar Charts Species Occurrences Produced"); + // collect all the outputs + map.put("File", f); + map.put("Result", p); + map.put("Images", images); + + // generate a primitive type for the collection + PrimitiveType output = new PrimitiveType(HashMap.class.getName(), map, + PrimitiveTypes.MAP, "ResultsMap", "Results Map"); + +// PrimitiveType output=null; + + return output; + } + + public void write(String writeSt) { + try { + out.write(writeSt); + out.newLine(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/examples/SimpleAlg.java b/src/main/java/org/gcube/dataaccess/algorithms/examples/SimpleAlg.java new file mode 100644 index 0000000..c26a9c9 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/examples/SimpleAlg.java @@ -0,0 +1,107 @@ +package org.gcube.dataaccess.algorithms.examples; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes; +import org.gcube.dataanalysis.ecoengine.interfaces.StandardLocalExternalAlgorithm; + + +public class SimpleAlg extends +StandardLocalExternalAlgorithm{ + + + @Override + public void init() throws Exception { + AnalysisLogger.getLogger().debug("Initialization"); + } + + @Override + public String getDescription() { + return "An algorithm for testing"; + } + + @Override + protected void process() throws Exception { + + AnalysisLogger.getLogger().debug("in process"); + + } + + @Override + protected void setInputParameters() { + addStringInput("Name","name",""); + + addStringInput("Surname","surname","Liccardo"); + + } + + @Override + public void shutdown() { + AnalysisLogger.getLogger().debug("Shutdown"); + + // closes database's connection + + } + + @Override + public StatisticalType getOutput() { + + + AnalysisLogger.getLogger().debug("retrieving results"); + + String name= getInputParameter("Name"); + + String surname= getInputParameter("Surname"); + + + + + List list = getInputParameters(); + + System.out.println("size: " + list.size()); + + for (int i = 0; i < list.size(); i++) { + + System.out.println(list.get(i).getName()+" "+list.get(i).getDefaultValue()); + + } + + + + PrimitiveType n = new PrimitiveType( + String.class.getName(), + getInputParameter("Name") , + PrimitiveTypes.STRING, + "Name", + "name"); + + PrimitiveType s = new PrimitiveType( + String.class.getName(), + getInputParameter("Surname") , + PrimitiveTypes.STRING, + "Surname", + "surname"); + + + + + LinkedHashMap map = new LinkedHashMap(); + + map.put("Name", n); + + map.put("Surname", s); + + + AnalysisLogger.getLogger().debug("name: " + name); + + AnalysisLogger.getLogger().debug("surname: " + surname); + + return null; + } + + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/examples/TestSimpleAlg.java b/src/main/java/org/gcube/dataaccess/algorithms/examples/TestSimpleAlg.java new file mode 100644 index 0000000..91abb38 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/examples/TestSimpleAlg.java @@ -0,0 +1,38 @@ +package org.gcube.dataaccess.algorithms.examples; + +import java.util.List; + +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class TestSimpleAlg { + + public static void main(String[] args) throws Exception { + System.out.println("TEST 1"); + List trans = null; + trans = TransducerersFactory.getTransducerers(testConfigLocal()); + trans.get(0).init(); + + + Regressor.process(trans.get(0)); + trans.get(0).getOutput(); + + trans = null; + } + + private static AlgorithmConfiguration testConfigLocal() { + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("TEST_ALG"); + +// AlgorithmConfiguration config=new AlgorithmConfiguration(); + + + return config; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/examples/TestTransducers.java b/src/main/java/org/gcube/dataaccess/algorithms/examples/TestTransducers.java new file mode 100644 index 0000000..f187b2a --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/examples/TestTransducers.java @@ -0,0 +1,67 @@ +package org.gcube.dataaccess.algorithms.examples; + +import java.util.List; + +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class TestTransducers { + +public static void main(String[] args) throws Exception { +System.out.println("TEST 1"); +List trans = null; +trans = TransducerersFactory.getTransducerers(testConfigLocal()); +trans.get(0).init(); + + +Regressor.process(trans.get(0)); +trans.get(0).getOutput(); + +trans = null; +} + +private static AlgorithmConfiguration testConfigLocal() { + + AlgorithmConfiguration config = Regressor.getConfig(); + +// AlgorithmConfiguration config=new AlgorithmConfiguration(); + + + config.setConfigPath("./cfg"); + + config.setParam("DatabaseName", "Obis2Repository"); + config.setParam("DatabaseUserName","postgres"); + config.setParam("DatabasePassword","0b1s@d4sc13nc3"); + config.setParam("databaseNamebaseDriver","org.postgresql.Driver"); + config.setParam("DatabaseURL", "jdbc:postgresql://obis2.i-marine.research-infrastructures.eu:5432/obis"); + + + System.out.println("config: " + config.getParam("DatabaseUserName")); + + + + +// System.out.println(config.getDatabaseURL()); + + config.setAgent("LISTNAMES_TABLES"); + + config.setParam("longitudeColumn", "decimallongitude"); + config.setParam("latitudeColumn", "decimallatitude"); + config.setParam("recordedByColumn", "recordedby"); + config.setParam("scientificNameColumn", "scientificname"); + config.setParam("eventDateColumn", "eventdate"); + config.setParam("lastModificationColumn", "modified"); + config.setParam("OccurrencePointsTableName", "whitesharkoccurrences2"); + config.setParam("finalTableName", "whitesharkoccurrencesnoduplicates"); + config.setParam("spatialTolerance", "0.5"); + config.setParam("confidence", "80"); + + + + return config; + +} + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/TestListDBInfo.java b/src/main/java/org/gcube/dataaccess/algorithms/test/TestListDBInfo.java new file mode 100644 index 0000000..2792c04 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/TestListDBInfo.java @@ -0,0 +1,38 @@ +package org.gcube.dataaccess.algorithms.test; + +import java.util.List; + +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class TestListDBInfo { + + public static void main(String[] args) throws Exception { + System.out.println("TEST 1"); + List trans = null; + trans = TransducerersFactory.getTransducerers(testConfigLocal()); + trans.get(0).init(); + + + Regressor.process(trans.get(0)); + trans.get(0).getOutput(); + + trans = null; + } + + private static AlgorithmConfiguration testConfigLocal() { + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTDBINFO"); + config.setParam("ResourceName", "TrendyLyzerObis"); + + + config.setGcubeScope("/gcube/devNext/NextNext"); + return config; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/TestListNames.java b/src/main/java/org/gcube/dataaccess/algorithms/test/TestListNames.java new file mode 100644 index 0000000..e6934d6 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/TestListNames.java @@ -0,0 +1,36 @@ +package org.gcube.dataaccess.algorithms.test; + +import java.util.List; + +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class TestListNames { + + public static void main(String[] args) throws Exception { + System.out.println("TEST 1"); + List trans = null; + trans = TransducerersFactory.getTransducerers(testConfigLocal()); + trans.get(0).init(); + + + Regressor.process(trans.get(0)); + StatisticalType output = trans.get(0).getOutput(); + System.out.println(output); + trans = null; + } + + private static AlgorithmConfiguration testConfigLocal() { + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTDBNAMES"); + config.setGcubeScope("/gcube/devNext/NextNext"); + return config; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/TestListSchemas.java b/src/main/java/org/gcube/dataaccess/algorithms/test/TestListSchemas.java new file mode 100644 index 0000000..069b05e --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/TestListSchemas.java @@ -0,0 +1,71 @@ +package org.gcube.dataaccess.algorithms.test; + +import java.util.List; + +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class TestListSchemas { + + public static void main(String[] args) throws Exception { + System.out.println("TEST 1"); + List trans = null; + trans = TransducerersFactory.getTransducerers(testConfigLocal()); + trans.get(0).init(); + + Regressor.process(trans.get(0)); + trans.get(0).getOutput(); + + trans = null; + } + + private static AlgorithmConfiguration testConfigLocal() { + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTDBSCHEMA"); + + //A test with a database postgres + config.setParam("ResourceName", "GP DB"); + + + + + //connection's parameters for a database postgres + +//// config.setParam("databaseName", "aquamapsdb"); + config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("userName", "postgres"); +// config.setParam("password", "d4science2"); +// config.setParam("driverName", "org.postgresql.Driver"); +// config.setParam("URL", +// "jdbc:postgresql://geoserver-dev.d4science-ii.research-infrastructures.eu:5432/aquamapsdb"); + + + // config.setParam("DatabaseName", "mysql"); + + + + + // Another test with database postgres + +// config.setParam("ResourceName", "TabularData Database"); + +// config.setParam("DatabaseName", "tabulardata"); + +// config.setParam("userName", "tabulardataadmin"); +// config.setParam("password", "gcube2010"); +// config.setParam("driverName", "org.postgresql.Driver"); +// config.setParam("URL", +// "jdbc:postgresql://node7.d.d4science.research-infrastructures.eu:5432/tabulardata"); + + + config.setGcubeScope("/gcube"); +// config.setGcubeScope("/d4science.research-infrastructures.eu"); + return config; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/TestListTables.java b/src/main/java/org/gcube/dataaccess/algorithms/test/TestListTables.java new file mode 100644 index 0000000..195838a --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/TestListTables.java @@ -0,0 +1,56 @@ +package org.gcube.dataaccess.algorithms.test; + +import java.util.List; + +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class TestListTables { + + + public static void main(String[] args) throws Exception { + System.out.println("TEST 1"); + List trans = null; + trans = TransducerersFactory.getTransducerers(testConfigLocal()); + trans.get(0).init(); + + + Regressor.process(trans.get(0)); + trans.get(0).getOutput(); + + trans = null; + } + + private static AlgorithmConfiguration testConfigLocal() { + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTTABLES"); + + //A test with a database postgres + config.setParam("ResourceName", "GP DB"); + + //connection's parameters for a database postgres + + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + +// config.setParam("userName", "postgres"); +// config.setParam("password", "d4science2"); +// config.setParam("driverName", "org.postgresql.Driver"); +// config.setParam("URL", +// "jdbc:postgresql://geoserver-dev.d4science-ii.research-infrastructures.eu:5432/aquamapsdb"); + + + //a test with a database mysql + + + + config.setGcubeScope("/gcube"); + return config; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/TestSubmitQuery.java b/src/main/java/org/gcube/dataaccess/algorithms/test/TestSubmitQuery.java new file mode 100644 index 0000000..ce8ab1a --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/TestSubmitQuery.java @@ -0,0 +1,92 @@ +package org.gcube.dataaccess.algorithms.test; + +import java.util.List; + +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class TestSubmitQuery { + + public static void main(String[] args) throws Exception { + System.out.println("TEST 1"); + + List trans = null; + trans = TransducerersFactory.getTransducerers(testConfigLocal()); + trans.get(0).init(); + + Regressor.process(trans.get(0)); + trans.get(0).getOutput(); + + trans = null; + } + + private static AlgorithmConfiguration testConfigLocal() { + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + +// // //A test with a database postgres +// config.setParam("ResourceName", "GP DB"); +// +// //connection's parameters for a database postgres +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName","area" ); +// config.setParam("Query","select * from area limit 3" ); + + + // // config.setParam("TableName", "Divisions"); + // config.setParam("TableName", "all_world"); + // config.setParam("Query", "select * from all_world"); + + // config.setParam("userName", "postgres"); + // config.setParam("password", "d4science2"); + // config.setParam("driverName", "org.postgresql.Driver"); + // config.setParam("URL", + // "jdbc:postgresql://geoserver-dev.d4science-ii.research-infrastructures.eu:5432/aquamapsdb"); + // config.setParam("dialect", + // "org.hibernate.dialect.PostgreSQLDialect"); + + + // a test with a database mysql +// config.setParam("ResourceName", "CatalogOfLife2010"); +// config.setParam("DatabaseName", "col2oct2010"); +// config.setParam("TableName", "common_names"); +//// config.setParam("Query", "select record_id, name_code from common_names limit 3"); +//// config.setParam("Query", "select record_id as a, name_code as b from common_names limit 3"); +// +//// config.setParam("Query", "select name_code, record_id from common_names limit 3"); +// +// config.setParam("Query", "select record_id, name_code from common_names limit 3"); + + config.setParam("ResourceName", "StatisticalManagerDataBase"); + config.setParam("DatabaseName", "testdb"); + config.setParam("Query", "select count (*)from (select csquarecode from hcaf_d)"); + + + +// // a test with postgis +// config.setParam("ResourceName", "Geoserver database "); +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); +// +// config.setParam("TableName", "Divisions"); +// config.setParam("Query", "select gid, area from \"Divisions\" limit 30"); +// +//// config.setParam("Query", "select the_geom from Divisions limit 30"); +// +//// config.setParam("Query", "select text(the_geom) from Divisions limit 30"); +// +// config.setParam("Query", "EXPLAIN ANALYZE select gid from \"Divisions\" limit 30"); + + config.setGcubeScope("/gcube/devsec"); + + // config.setGcubeScope("/gcube"); + return config; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/TestTableDetails.java b/src/main/java/org/gcube/dataaccess/algorithms/test/TestTableDetails.java new file mode 100644 index 0000000..6350762 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/TestTableDetails.java @@ -0,0 +1,106 @@ +package org.gcube.dataaccess.algorithms.test; + +import java.util.List; + +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class TestTableDetails { + + + public static void main(String[] args) throws Exception { + System.out.println("TEST 1"); + List trans = null; + trans = TransducerersFactory.getTransducerers(testConfigLocal()); + trans.get(0).init(); + + + Regressor.process(trans.get(0)); + trans.get(0).getOutput(); + + trans = null; + } + + + private static AlgorithmConfiguration testConfigLocal() { + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTTABLEDETAILS"); + +// //A test with a database postgres +// config.setParam("ResourceName", "GP DB"); +// +// //connection's parameters for a database postgres +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); +//// config.setParam("TableName", "Divisions"); +// +//// config.setParam("TableName", "all_world"); +// +// config.setParam("TableName", "biodiversity_lme"); + + +// +// config.setParam("userName", "postgres"); +// config.setParam("password", "d4science2"); +// config.setParam("driverName", "org.postgresql.Driver"); +// config.setParam("URL", +// "jdbc:postgresql://geoserver-dev.d4science-ii.research-infrastructures.eu:5432/aquamapsdb"); +// config.setParam("dialect", "org.hibernate.dialect.PostgreSQLDialect"); + + +// //A test with a database postgres +// config.setParam("ResourceName", "StatisticalManagerDataBase"); +// +// //connection's parameters for a database postgres +// config.setParam("DatabaseName", "testdb"); +// config.setParam("SchemaName", "public"); +//// config.setParam("TableName", "Divisions"); +// +//// config.setParam("TableName", "all_world"); +// +// config.setParam("TableName", "hcaf_d"); +//// +//// config.setParam("userName", "utente"); +//// config.setParam("password", "d4science"); +//// config.setParam("driverName", "org.postgresql.Driver"); +//// config.setParam("URL", +//// "jdbc:postgresql://geoserver-dev.d4science-ii.research-infrastructures.eu:5432/aquamapsdb"); +//// config.setParam("dialect", "org.hibernate.dialect.PostgreSQLDialect"); + + + + + +// //a test with a database mysql +// config.setParam("ResourceName", "CatalogOfLife2010"); +// config.setParam("DatabaseName", "col2oct2010"); +// config.setParam("TableName", "Common_names"); + + + //a test with postgis + config.setParam("ResourceName", "Geoserver database "); + +// config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("DatabaseName", "aquamapsdb"); + + config.setParam("SchemaName", "public"); + config.setParam("TableName", "divisions"); + + + + + + + config.setGcubeScope("/gcube/devsec"); + return config; + + } + + + + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionListDBInfo.java b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionListDBInfo.java new file mode 100644 index 0000000..d17652b --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionListDBInfo.java @@ -0,0 +1,88 @@ +package org.gcube.dataaccess.algorithms.test.regressiontest; + +import java.util.List; + +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class RegressionListDBInfo { + +// static String[] algorithms = { "Postgres", "NullInputValue"}; + + // static AlgorithmConfiguration[] configs = { testPostgres1(), + // testPostgres2(), testPostgis(), Mysql(), NullInputValue(), + // Postgres3() }; + +// static AlgorithmConfiguration[] configs = { testPostgres1(), NullInputValue()}; + static String[] algorithms = { "Postgres"}; + static AlgorithmConfiguration[] configs = { testPostgres1()}; + + public static void main(String[] args) throws Exception { + + // System.out.println("TEST 1"); + + for (int i = 0; i < algorithms.length; i++) { + AnalysisLogger.getLogger().debug("Executing:" + algorithms[i]); + + // ComputationalAgent trans = new WPSProcess(wps, algorithms[i]); + + List trans = null; + trans = TransducerersFactory.getTransducerers(configs[i]); + trans.get(0).init(); + + // trans.setConfiguration(configs[i]); + // trans.init(); + Regressor.process(trans.get(0)); + StatisticalType st = trans.get(0).getOutput(); + + // Print Result + AnalysisLogger.getLogger().debug("ST:" + st); + trans = null; + } + + } + + private static AlgorithmConfiguration testPostgres1() { + + System.out.println("TEST 1: Postgres"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTDBINFO"); + + // A test with a database postgres +// config.setParam("ResourceName", "GP DB"); + +// config.setParam("ResourceName", "AquaMaps Service DataBase"); + +// config.setParam("ResourceName", "StatisticalManagerDataBase"); + config.setParam("ResourceName", "TabularData Database"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue() { + + System.out.println("TEST 2: NullInputValue"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTDBINFO"); + + // A test with a database postgres +// config.setParam("ResourceName", "GP DB"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionListNames.java b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionListNames.java new file mode 100644 index 0000000..7ec2b8d --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionListNames.java @@ -0,0 +1,75 @@ +package org.gcube.dataaccess.algorithms.test.regressiontest; + +import java.util.LinkedHashMap; +import java.util.List; + +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.datatypes.PrimitiveType; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class RegressionListNames { + + static String[] algorithms = { "Postgres1", "Postgres2", "Postgis", + "Mysql", "NullInputValue" }; + + static AlgorithmConfiguration config; + + public static void main(String[] args) throws Exception { + + System.out.println("TEST 1"); + +// for (int i = 0; i < algorithms.length; i++) { + AnalysisLogger.getLogger().debug("Executing:" + "test"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTDBNAMES"); + config.setGcubeScope("/gcube"); + + + List trans = null; + trans = TransducerersFactory.getTransducerers(config); + trans.get(0).init(); + + // trans.setConfiguration(configs[i]); + // trans.init(); + Regressor.process(trans.get(0)); + StatisticalType st = trans.get(0).getOutput(); + AnalysisLogger.getLogger().debug("ST:" + st); + + +// // Print Result +// PrimitiveType obj= (PrimitiveType)st; +// Object result=(Object) (obj.getContent()); +// LinkedHashMap map=new LinkedHashMap(); +// +// map= (LinkedHashMap) result; +// +// for(int j=0;j trans = null; + trans = TransducerersFactory.getTransducerers(configs[i]); + trans.get(0).init(); + + // trans.setConfiguration(configs[i]); + // trans.init(); + Regressor.process(trans.get(0)); + StatisticalType st = trans.get(0).getOutput(); + + // Print Result + AnalysisLogger.getLogger().debug("ST:" + st); + trans = null; + } + + } + + + private static AlgorithmConfiguration testPostgres1() { + + System.out.println("TEST 1: Postgres table without rows"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTDBSCHEMA"); + + // A test with a database postgres +// config.setParam("ResourceName", "GP DB"); +// config.setParam("DatabaseName", "aquamapsdb"); + + +// config.setParam("ResourceName", "StatisticalManagerDataBase"); +// config.setParam("DatabaseName", "testdb"); + +// config.setParam("ResourceName", "CatalogOfLife2010"); +// config.setParam("DatabaseName", "col2oct2010"); + +// config.setParam("ResourceName", "StatisticalManagerDataBase"); +// config.setParam("DatabaseName", "testdb"); + + config.setParam("ResourceName", "TimeSeriesDatabase"); + config.setParam("DatabaseName", "timeseries"); + +// config.setParam("ResourceName", "Geoserver database "); +// config.setParam("DatabaseName", "aquamapsdb"); + + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + + private static AlgorithmConfiguration NullInputValue1() { + + System.out.println("TEST 2: NullInputValue1"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTDBSCHEMA"); + + // A test with a database postgres +// config.setParam("ResourceName", "GP DB"); + config.setParam("DatabaseName", "aquamapsdb"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue2() { + + System.out.println("TEST 3: NullInputValue2"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTDBSCHEMA"); + + // A test with a database postgres + config.setParam("ResourceName", "GP DB"); +// config.setParam("DatabaseName", "aquamapsdb"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionListTables.java b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionListTables.java new file mode 100644 index 0000000..82632bb --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionListTables.java @@ -0,0 +1,165 @@ +package org.gcube.dataaccess.algorithms.test.regressiontest; + +import java.util.List; + +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class RegressionListTables { + +// static String[] algorithms = { "Postgres1", "Mysql", "NullInputValue1", "NullInputValue2", "NullInputValue3" }; + +// static AlgorithmConfiguration[] configs = { testPostgres1(),Mysql(), NullInputValue1(), NullInputValue2(), NullInputValue3()}; + + + static String[] algorithms = { "Postgres1"}; + static AlgorithmConfiguration[] configs = { Mysql()}; + + public static void main(String[] args) throws Exception { + + // System.out.println("TEST 1"); + + for (int i = 0; i < algorithms.length; i++) { + AnalysisLogger.getLogger().debug("Executing:" + algorithms[i]); + + // ComputationalAgent trans = new WPSProcess(wps, algorithms[i]); + + List trans = null; + trans = TransducerersFactory.getTransducerers(configs[i]); + trans.get(0).init(); + + // trans.setConfiguration(configs[i]); + // trans.init(); + Regressor.process(trans.get(0)); + StatisticalType st = trans.get(0).getOutput(); + + // Print Result + AnalysisLogger.getLogger().debug("ST:" + st); + trans = null; + } + + } + + private static AlgorithmConfiguration testPostgres1() { + + System.out.println("TEST 1: Postgres table without rows"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTTABLES"); + + // A test with a database postgres +// config.setParam("ResourceName", "GP DB"); +// +// config.setParam("DatabaseName", "aquamapsdb"); + + config.setParam("ResourceName", "StatisticalManagerDataBase"); + config.setParam("DatabaseName", "testdb"); + config.setParam("SchemaName", "public"); +// config.setParam("SchemaName", "aquamapsvre"); + + +// config.setParam("ResourceName", "CatalogOfLife2010"); +// config.setParam("DatabaseName", "col2oct2010"); +//// config.setParam("SchemaName", ""); + + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration Mysql() { + + System.out.println("TEST 2: Mysql"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTTABLES"); + + // a test with a database mysql + config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("DatabaseName", "col2oct2010"); + config.setParam("SchemaName", ""); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue1() { + + System.out.println("TEST 3: Postgis NullInputValue1"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTTABLES"); + + // a test with postgis +// config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + + private static AlgorithmConfiguration NullInputValue2() { + + System.out.println("TEST 4: Postgis NullInputValue2"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTTABLES"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); +// config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue3() { + + System.out.println("TEST 5: Postgis NullInputValue3"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTTABLES"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); + + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + + + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionRandomSampleOnTable.java b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionRandomSampleOnTable.java new file mode 100644 index 0000000..519f610 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionRandomSampleOnTable.java @@ -0,0 +1,273 @@ +package org.gcube.dataaccess.algorithms.test.regressiontest; + +import java.util.List; + +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class RegressionRandomSampleOnTable { + + // static AlgorithmConfiguration[] configs = { testPostgres1(), + // testPostgis(), testMysql1(),testMysql2(), NullInputValue1(), + // NullInputValue2(), NullInputValue3(), NullInputValue4()}; + + // static String[] algorithms = { "Postgres1", "Postgis", "Mysql1", + // "Mysql2", "NullInputValue1", "NullInputValue2", "NullInputValue3", + // "NullInputValue4"}; + + static AlgorithmConfiguration[] configs = { testMysql1() }; + static String[] algorithms = { "Postgres1" }; + + public static void main(String[] args) throws Exception { + + // System.out.println("TEST 1"); + + for (int i = 0; i < algorithms.length; i++) { + AnalysisLogger.getLogger().debug("Executing:" + algorithms[i]); + + // ComputationalAgent trans = new WPSProcess(wps, algorithms[i]); + + List trans = null; + trans = TransducerersFactory.getTransducerers(configs[i]); + trans.get(0).init(); + + // trans.setConfiguration(configs[i]); + // trans.init(); + Regressor.process(trans.get(0)); + StatisticalType st = trans.get(0).getOutput(); + + // Print Result + AnalysisLogger.getLogger().debug("ST:" + st); + trans = null; + } + + } + + // Posgresql database + + private static AlgorithmConfiguration testPostgres1() { + + System.out.println("TEST 1: Postgres table without rows"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("RANDOMSAMPLEONTABLE"); + + // A test with a database postgres + // config.setParam("ResourceName", "GP DB"); + // + // config.setParam("DatabaseName", "aquamapsdb"); + // config.setParam("SchemaName", "public"); + // config.setParam("TableName", "area"); // it has not rows + +// config.setParam("ResourceName", "StatisticalManagerDataBase"); +// config.setParam("DatabaseName", "testdb"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "hcaf_d"); + // // config.setParam("TableName", + // "hspec_id_3f4c79fa_442e_42ba_9344_1b3e64dc3326"); + + // config.setParam("TableName", + // "hspec_id_c8e87e16_a0b4_4f9b_b48e_f1cf60ab104c"); + // // config.setParam("TableName", + // "generic_id037d302d_2ba0_4e43_b6e4_1a797bb91728"); + // // config.setParam("TableName", "bionymoutlevfaked2csvpreprcsv"); + // + // // config.setParam("TableName", + // "timeseries_id08b3abb9_c7b0_4b82_8117_64b69055416f"); + // // config.setParam("TableName", + // "occurrence_species_idaf35d737_fb3e_43a7_b13a_611dfa97b064"); + // config.setParam("TableName", + // "generic_id037d302d_2ba0_4e43_b6e4_1a797bb91728"); + + // config.setParam("ResourceName", "AquaMaps Service DataBase"); + // config.setParam("DatabaseName", "aquamapsorgupdated"); + // config.setParam("SchemaName", "public"); + // // + // // + // // + // // config.setParam("TableName", "hspec2012_07_11_12_33_05_526"); + // + // // config.setParam("TableName", "custom2013_12_04_15_27_16_493_cet"); + // + // config.setParam("TableName", "hspec_suitable_peng_test_tbsp_1"); + +// config.setParam("ResourceName", "AquaMaps Service DataBase"); +// config.setParam("DatabaseName", "aquamapsorgupdated"); +// config.setParam("SchemaName", "public"); +//// config.setParam("TableName", "hspec_suitable_peng_test_tbsp_1"); +// config.setParam("TableName", "hspen"); + +// config.setParam("ResourceName", "Geoserver database "); +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "SeaVoX_sea_areas_polygons_v14"); + + // Obis + config.setParam("ResourceName", "Obis2Repository"); + config.setParam("DatabaseName", "obis"); +// config.setParam("SchemaName", "calc"); +// config.setParam("TableName", "map1d"); + config.setParam("SchemaName", "newd20110525"); + config.setParam("TableName", "edc"); + + // config.setParam("Query", "select * from area limit 3"); + + // config.setParam("Query", + // "select text(the_geom) from \"Divisions\" limit 1"); + + // config.setParam("TableName", "all_world"); + // config.setParam("TableName", "biodiversity_lme"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration testPostgis() { + + System.out.println("TEST 2: Postgis"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("RANDOMSAMPLEONTABLE"); + + // A test with a database postgres + config.setParam("ResourceName", "GP DB"); + + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration testMysql1() { + + System.out.println("TEST 3: Mysql1"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("RANDOMSAMPLEONTABLE"); + + // A test with a database mysql + config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("DatabaseName", "col2oct2010"); + config.setParam("TableName", "common_names"); + // config.setParam("TableName", "Common_names"); // mysql is not case + // sensitive +// config.setParam("TableName", "databases"); +// config.setParam("TableName", "simple_search"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration testMysql2() { + + System.out.println("TEST 4: Mysql2"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("RANDOMSAMPLEONTABLE"); + + // A test with a database mysql + config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("DatabaseName", "col2oct2010"); + config.setParam("TableName", "example"); // the table does not exist + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue1() { + + System.out.println("TEST 5: Postgis NullInputValue1"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("RANDOMSAMPLEONTABLE"); + + // a test with postgis + // config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue2() { + System.out.println("TEST 6: Postgis NullInputValue2"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("RANDOMSAMPLEONTABLE"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + // config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue3() { + + System.out.println("TEST 7: Postgis NullInputValue3"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("RANDOMSAMPLEONTABLE"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + // config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue4() { + System.out.println("TEST 8: Postgis NullInputValue4"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("RANDOMSAMPLEONTABLE"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + // config.setParam("TableName", "Divisions"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionSampleOnTable.java b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionSampleOnTable.java new file mode 100644 index 0000000..d5f1848 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionSampleOnTable.java @@ -0,0 +1,266 @@ +package org.gcube.dataaccess.algorithms.test.regressiontest; + +import java.util.List; + +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class RegressionSampleOnTable { + +// static AlgorithmConfiguration[] configs = { testPostgres1(), testPostgis(), testMysql1(),testMysql2(), NullInputValue1(), NullInputValue2(), NullInputValue3(), NullInputValue4()}; + +// static String[] algorithms = { "Postgres1", "Postgis", "Mysql1", "Mysql2", "NullInputValue1", "NullInputValue2", "NullInputValue3", "NullInputValue4"}; + + static AlgorithmConfiguration[] configs = { testMysql1()}; + + static String[] algorithms = { "Postgres1"}; + + public static void main(String[] args) throws Exception { + + // System.out.println("TEST 1"); + + for (int i = 0; i < algorithms.length; i++) { + AnalysisLogger.getLogger().debug("Executing:" + algorithms[i]); + + // ComputationalAgent trans = new WPSProcess(wps, algorithms[i]); + + List trans = null; + trans = TransducerersFactory.getTransducerers(configs[i]); + trans.get(0).init(); + + // trans.setConfiguration(configs[i]); + // trans.init(); + Regressor.process(trans.get(0)); + StatisticalType st = trans.get(0).getOutput(); + + // Print Result + AnalysisLogger.getLogger().debug("ST:" + st); + trans = null; + } + + } + + private static AlgorithmConfiguration testPostgres1() { + + System.out.println("TEST 1: Postgres table without rows"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SAMPLEONTABLE"); + + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); +// config.setParam("TableName", "biodiversity"); + + config.setParam("TableName", "SeaVoX_sea_areas_polygons_v14"); +// config.setParam("TableName", ""); + + // A test with a database postgres Geoserver +// config.setParam("ResourceName", "GP DB"); +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); +//// config.setParam("TableName", "area"); // it has not rows +// config.setParam("TableName", "Divisions"); + +// config.setParam("Query", "select * from area limit 3"); + +// config.setParam("Query", "select text(the_geom) from \"Divisions\" limit 1"); + + // config.setParam("TableName", "all_world"); + // config.setParam("TableName", "biodiversity_lme"); + + +// config.setParam("ResourceName", "DionysusDB"); +// config.setParam("DatabaseName", "World"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableNamefcatalog", "countrylanguage"); //mysql is not case sensitive + +// config.setParam("ResourceName", "AquaMaps Service DataBase"); +// config.setParam("DatabaseName", "aquamapsorgupdated"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "speciesoccursum"); +//// config.setParam("TableName", "hspec2012_07_11_12_33_05_526"); +// config.setParam("TableName", "hspen"); + + //Statistical +// config.setParam("ResourceName", "StatisticalManagerDataBase"); +// config.setParam("DatabaseName", "testdb"); +// config.setParam("SchemaName", "public"); +//// config.setParam("TableName", "hspec_id_3f4c79fa_442e_42ba_9344_1b3e64dc3326"); +//// config.setParam("TableName", "taxamatchinput"); +//// config.setParam("TableName", "Divisions"); +// config.setParam("TableName", "hcaf_d"); + + //Obis +// config.setParam("ResourceName", "Obis2Repository"); +// config.setParam("DatabaseName", "obis"); +// config.setParam("SchemaName", "calc"); +// config.setParam("TableName", "map1d"); + + //Obis +// config.setParam("ResourceName", "Obis2Repository"); +// config.setParam("DatabaseName", "obis"); +// config.setParam("SchemaName", "newd20110525"); +//// config.setParam("TableName", "map1d"); +// config.setParam("TableName", "edc"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration testPostgis() { + + System.out.println("TEST 2: Postgis"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SAMPLEONTABLE"); + + // A test with a database postgres +// config.setParam("ResourceName", "GP DB"); + +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "Divisions"); + + config.setParam("ResourceName", "StatisticalManagerDataBase"); + config.setParam("DatabaseName", "testdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "hcaf_d"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration testMysql1() { + + System.out.println("TEST 3: Mysql1"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SAMPLEONTABLE"); + + // A test with a database mysql + config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("DatabaseName", "col2oct2010"); +// config.setParam("TableName", "Common_names"); //mysql is not case sensitive +// config.setParam("TableName", "databases"); +// config.setParam("TableName", "families"); + config.setParam("TableName", "common_names"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + +private static AlgorithmConfiguration testMysql2() { + + System.out.println("TEST 4: Mysql2"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SAMPLEONTABLE"); + + // A test with a database mysql + config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("DatabaseName", "col2oct2010"); + config.setParam("TableName", "example"); //the table does not exist + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + private static AlgorithmConfiguration NullInputValue1() { + + System.out.println("TEST 5: Postgis NullInputValue1"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SAMPLEONTABLE"); + + // a test with postgis +// config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue2() { + System.out.println("TEST 6: Postgis NullInputValue2"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SAMPLEONTABLE"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); +// config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + private static AlgorithmConfiguration NullInputValue3() { + + System.out.println("TEST 7: Postgis NullInputValue3"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SAMPLEONTABLE"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + private static AlgorithmConfiguration NullInputValue4() { + System.out.println("TEST 8: Postgis NullInputValue4"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SAMPLEONTABLE"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); +// config.setParam("TableName", "Divisions"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionSmartSampleOnTable.java b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionSmartSampleOnTable.java new file mode 100644 index 0000000..15d9dd4 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionSmartSampleOnTable.java @@ -0,0 +1,305 @@ +package org.gcube.dataaccess.algorithms.test.regressiontest; + +import java.util.List; + +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class RegressionSmartSampleOnTable { + +//static AlgorithmConfiguration[] configs = { testPostgres1(), testPostgis(), testMysql1(),testMysql2(), NullInputValue1(), NullInputValue2(), NullInputValue3(), NullInputValue4()}; + +// static String[] algorithms = { "Postgres1", "Postgis", "Mysql1", "Mysql2", "NullInputValue1", "NullInputValue2", "NullInputValue3", "NullInputValue4"}; + + static AlgorithmConfiguration[] configs = { testMysql1()}; + static String[] algorithms = { "Postgres1"}; + + public static void main(String[] args) throws Exception { + + // System.out.println("TEST 1"); + + for (int i = 0; i < algorithms.length; i++) { + AnalysisLogger.getLogger().debug("Executing:" + algorithms[i]); + + // ComputationalAgent trans = new WPSProcess(wps, algorithms[i]); + + List trans = null; + trans = TransducerersFactory.getTransducerers(configs[i]); + trans.get(0).init(); + + // trans.setConfiguration(configs[i]); + // trans.init(); + Regressor.process(trans.get(0)); + StatisticalType st = trans.get(0).getOutput(); + + // Print Result + AnalysisLogger.getLogger().debug("ST:" + st); + trans = null; + } + + } + + private static AlgorithmConfiguration testPostgres1() { + + System.out.println("TEST 1: Postgres table without rows"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SMARTSAMPLEONTABLE"); + +// // A test with a database postgres +// config.setParam("ResourceName", "GP DB"); +// +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "area"); // it has not rows + +// config.setParam("Query", "select * from area limit 3"); + +// config.setParam("Query", "select text(the_geom) from \"Divisions\" limit 1"); + + // config.setParam("TableName", "all_world"); + // config.setParam("TableName", "biodiversity_lme"); + + +// config.setParam("ResourceName", "StatisticalManagerDataBase"); +// config.setParam("DatabaseName", "testdb"); +// config.setParam("SchemaName", "public"); +//// config.setParam("TableName", "hspec_id_3f4c79fa_442e_42ba_9344_1b3e64dc3326"); +// +//// config.setParam("TableName", "hcaf_d"); +// +// config.setParam("TableName", "hspec_id_c8e87e16_a0b4_4f9b_b48e_f1cf60ab104c"); + +// config.setParam("TableName", "hcaf_d"); + +// config.setParam("TableName", "generic_id037d302d_2ba0_4e43_b6e4_1a797bb91728"); +// config.setParam("TableName", "bionymoutlevfaked2csvpreprcsv"); + +// config.setParam("TableName", "timeseries_id08b3abb9_c7b0_4b82_8117_64b69055416f"); +// config.setParam("TableName", "occurrence_species_idaf35d737_fb3e_43a7_b13a_611dfa97b064"); + +// config.setParam("TableName", "processedoccurrences_id_e3b82f7f_6bd6_493a_bd2c_552cd486004a"); +// config.setParam("TableName", "hspen_mini_100"); +// config.setParam("TableName", "hspec_id_c8e87e16_a0b4_4f9b_b48e_f1cf60ab104c"); + +// config.setParam("TableName", "hspec_id_3f4c79fa_442e_42ba_9344_1b3e64dc3326"); + + +// config.setParam("ResourceName", "AquaMaps Service DataBase"); +// config.setParam("DatabaseName", "aquamapsorgupdated"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "hspec_suitable_peng_test_tbsp_1"); + +// config.setParam("ResourceName", "AquaMaps Service DataBase"); +// config.setParam("DatabaseName", "aquamapsorgupdated"); +// config.setParam("SchemaName", "public"); +//// config.setParam("TableName", "hspec2012_07_11_12_33_05_526"); +// config.setParam("TableName", "hspen"); + +// config.setParam("ResourceName", "Geoserver database "); +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "SeaVoX_sea_areas_polygons_v14"); + + +////// config.setParam("TableName", "hspec2012_07_11_12_33_05_483"); +// config.setParam("TableName", "hspec_suitable_peng_test_tbsp_1"); +//// config.setParam("TableName", "hspec_suitable_executor_1"); +// config.setParam("TableName", "custom2013_12_04_15_27_16_493_cet"); +// config.setParam("TableName", "hspec2012_07_11_12_33_05_483"); + + + +// config.setParam("ResourceName", "AquaMaps Service DataBase"); +// config.setParam("DatabaseName", "aquamapsorgupdated"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "hspec2012_07_11_12_33_05_526"); + +//// //statistical +// config.setParam("ResourceName", "StatisticalManagerDataBase"); +// config.setParam("DatabaseName", "testdb"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "hcaf_d"); +////// config.setParam("TableName", "hspec_id_3f4c79fa_442e_42ba_9344_1b3e64dc3326"); + + //Obis + config.setParam("ResourceName", "Obis2Repository"); + config.setParam("DatabaseName", "obis"); + config.setParam("SchemaName", "newd20110525"); +// config.setParam("TableName", "map1d"); + config.setParam("TableName", "_positions1"); +// config.setParam("TableName", "map1d"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + } + + private static AlgorithmConfiguration testPostgis() { + + System.out.println("TEST 2: Postgis"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SMARTSAMPLEONTABLE"); + + // A test with a database postgres + config.setParam("ResourceName", "GP DB"); + + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration testMysql1() { + + System.out.println("TEST 3: Mysql1"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SMARTSAMPLEONTABLE"); + + // A test with a database mysql + config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("DatabaseName", "col2oct2010"); + config.setParam("TableName", "common_names"); //mysql is not case sensitive +// config.setParam("TableName", "databases"); +// config.setParam("TableName", "simple_search"); +// config.setParam("TableName", "scientific_names"); + + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + +private static AlgorithmConfiguration testMysql2() { + + System.out.println("TEST 4: Mysql2"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SMARTSAMPLEONTABLE"); + + // A test with a database mysql + config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("DatabaseName", "col2oct2010"); + config.setParam("TableName", "example"); //the table does not exist + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } +//private static AlgorithmConfiguration testMysql3() { //dati sbagliati +// +// System.out.println("TEST 4.1: Mysql3"); +// +// AlgorithmConfiguration config = Regressor.getConfig(); +// +// config.setAgent("SMARTSAMPLEONTABLE"); +// +// // A test with a database mysql +// config.setParam("ResourceName", "CatalogOfLife2010"); +// config.setParam("DatabaseName", "aquamaps"); +// config.setParam("TableName", "hcaf_d"); +// +// config.setGcubeScope("/gcube/devsec"); +// +// return config; +// +//} + + private static AlgorithmConfiguration NullInputValue1() { + + System.out.println("TEST 5: Postgis NullInputValue1"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SMARTSAMPLEONTABLE"); + + // a test with postgis +// config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue2() { + System.out.println("TEST 6: Postgis NullInputValue2"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SMARTSAMPLEONTABLE"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); +// config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + private static AlgorithmConfiguration NullInputValue3() { + + System.out.println("TEST 7: Postgis NullInputValue3"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SMARTSAMPLEONTABLE"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + private static AlgorithmConfiguration NullInputValue4() { + System.out.println("TEST 8: Postgis NullInputValue4"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("SMARTSAMPLEONTABLE"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); +// config.setParam("TableName", "Divisions"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionSubmitQuery.java b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionSubmitQuery.java new file mode 100644 index 0000000..14d3a0b --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionSubmitQuery.java @@ -0,0 +1,373 @@ +package org.gcube.dataaccess.algorithms.test.regressiontest; + +import java.util.List; + +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; + +public class RegressionSubmitQuery { + +// static String[] algorithms = { "Postgres1", "Mysql", "Postgres3", "Postgres4", "NullInputValue1", "NullInputValue2", "NullInputValue3", "NullInputValue4", "NullInputValue5", "Postgis"}; + +// static AlgorithmConfiguration[] configs = { testPostgres1(), +// testPostgres2(), testPostgis(), Mysql(), NullInputValue(), +// Postgres3() }; + +// static AlgorithmConfiguration[] configs = { testPostgres1(), Mysql(), Postgres3(), Postgres4(), NullInputValue1(), NullInputValue2(), NullInputValue3(), NullInputValue4(), NullInputValue5(), Postgis()}; + + static String[] algorithms = {"Postgres1"}; + static AlgorithmConfiguration[] configs = { testPostgres1() }; + + public static void main(String[] args) throws Exception { + + // System.out.println("TEST 1"); + + for (int i = 0; i < algorithms.length; i++) { + AnalysisLogger.getLogger().debug("Executing:" + algorithms[i]); + + // ComputationalAgent trans = new WPSProcess(wps, algorithms[i]); + + List trans = null; + trans = TransducerersFactory.getTransducerers(configs[i]); + trans.get(0).init(); + + // trans.setConfiguration(configs[i]); + // trans.init(); + Regressor.process(trans.get(0)); + StatisticalType st = trans.get(0).getOutput(); + + // Print Result + AnalysisLogger.getLogger().debug("ST:" + st); + trans = null; + } + + } + + private static AlgorithmConfiguration testPostgres1() { + + System.out.println("TEST 1: Postgres table without rows"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + +// // A test with a database postgres +// config.setParam("ResourceName", "StatisticalManagerDataBase"); +// config.setParam("DatabaseName", "testdb"); +////// config.setParam("", "TRUE"); +// config.setParam("Read-Only Query", "true"); +// config.setParam("Apply Smart Correction", "FALSE"); +// config.setParam("Language", "NONE"); +//// config.setParam("Query", "DELETE from test_gsay_03217cfda4244870b4d11f9e0eca58fe"); +// config.setParam("Query", "select * from hcaf_d limit 20"); + +// config.setParam("Apply Smart Correction", "TRUE"); +// config.setParam("Language", "POSTGRES"); + + + +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "hcaf_d"); + + +// +// +// config.setParam("Query", "select * from hcaf_d limit 1"); +// config.setParam("Query", "select * from hspen limit 6"); + +// config.setParam("Query", "select * from bionymfaked18csvpreprcsv limit 2"); + +// config.setParam("Query", "select count (*)from (select csquarecode from hcaf_d)"); + +// config.setParam("Query", "select csquarecode,months,sum(effort) as effort, sum(total_yft_catch) as total_yft_catch from (select csquarecode,to_char(time,'MM') months,sum(effort) as effort,sum(total_yft_catch) as total_yft_catch from timeseries_idacdbb646_7500_4920_8e0d_aa38cc99a4a6 group by csquarecode,time order by time ASC) as a group by csquarecode,months order by csquarecode"); + +// config.setParam("Query", "select csquarecode, total_yft_catch from timeseries_idacdbb646_7500_4920_8e0d_aa38cc99a4a6 limit 3"); + +// config.setParam("ResourceName", "DionysusDB"); +// config.setParam("DatabaseName", "World"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "countrylanguage"); //mysql is not case sensitive +//// config.setParam("Query", "select * from countrylanguage limit 10"); +// config.setParam("Query", "SELECT * FROM information_schema.COLUMNS WHERE table_name ='countrylanguage' and table_schema='public'"); + +// config.setParam("ResourceName", "GP DB"); +// +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("", "TRUE"); +// config.setParam("SchemaName", "public"); +// config.setParam("TableName", "Divisions"); +// config.setParam("Query","select gid, area, perimeter, nafo_, nafo_id, zone from \"Divisions\" limit 100"); + +// config.setParam("TableName", "area"); // it has not rows + +// config.setParam("Query", "select * from area limit 3"); +// config.setParam("Query", "select gid, area, perimeter, CAST(the_geom as text) from \"Divisions\" limit 10"); + +// config.setParam("Query", "select text(the_geom) from \"Divisions\" limit 1"); + +// config.setParam("Query", "select perimeter,zone from \"Divisions\" where gid='7'"); + +// config.setParam("Query", "select area, CAST(perimeter as text) from \"Divisions\" order by random() limit 2"); + + // config.setParam("TableName", "all_world"); + // config.setParam("TableName", "biodiversity_lme"); + +// //Obis +// config.setParam("ResourceName", "Obis2Repository"); +// config.setParam("DatabaseName", "obis"); +// config.setParam("Read-Only Query", "trie"); +// config.setParam("Apply Smart Correction", "FALSE"); +// config.setParam("Language", "NONE"); +//// config.setParam("Query", "select id from fmap.randomdrs limit 1"); +//// config.setParam("Query", "select lifestage from randomdrs"); +// config.setParam("Query", "select * from newd20110525."+"\""+"edc"+ "\""+" where id='76864082'"); + + +// config.setParam("ResourceName", "AquaMaps Service DataBase"); +// config.setParam("DatabaseName", "aquamapsorgupdated"); +// config.setParam("Read-Only Query", "TRUE"); +// config.setParam("Apply Smart Correction", "FALSE"); +// config.setParam("Language", "NONE"); +//// config.setParam("Query", "select id from fmap.randomdrs limit 1"); +//// config.setParam("Query", "select * from (select * from maxminlat_hspen2012_02_28_17_45_49_572 as a join maxminlat_hspen2011_09_23_15_31_47_530 as b on a.maxclat=b.maxclat limit 2"); +// +//// config.setParam("Query", "select * from maxminlat_hspen2012_02_28_17_45_49_572 as a join maxminlat_hspen2011_09_23_15_31_47_530 as b on a.maxclat=b.maxclat limit 2"); +// +//// config.setParam("Query", "select * from hcaf_d_2018_linear_01341919234605 as a join hcaf_d_2024_linear_11341919235343 as b on a.csquarecode = b.csquarecode limit 1"); +// +// config.setParam("Query", "select * from hcaf_d_2018_linear_01341919234605 as a, hcaf_d_2024_linear_11341919235343 as b where a.csquarecode = b.csquarecode limit 1"); +// + + + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("Read-Only Query", "true"); + config.setParam("Apply Smart Correction", "FALSE"); + config.setParam("Language", "NONE"); + config.setParam("Query", "select st_astext(the_geom) from" +"\""+"SeaVoX_sea_areas_polygons_v14"+"\""+"limit 1"); +// config.setParam("Query", "select * from public.depthmean limit 10"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration Mysql() { + + System.out.println("TEST 2: Mysql"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + +// // a test with postgis +// config.setParam("ResourceName", "Geoserver database "); +// config.setParam("SchemaName", "public"); +// config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("TableName", "Divisions"); + + + + //a test with a database mysql + config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("DatabaseName", "col2oct2010"); + config.setParam("TableName", "Common_names"); //mysql is not case sensitive +// config.setParam("Query", "select * from common_names limit 10"); + config.setParam("Read-Only Query", "TRUE"); + config.setParam("Apply Smart Correction", "FALSE"); + config.setParam("Language", "NONE"); + +// config.setParam("Query", "select a.name_code as uno, b.name_code as due from common_names as a join distribution as b on a.name_code=b.name_code limit 2"); + config.setParam("Query", "select * from common_names as a join distribution as b on a.name_code=b.name_code"); + // config.setParam("TableName", "specialists"); + +// config.setParam("Query", "select * from specialists limit 3"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration Postgres3() { + + System.out.println("TEST 3: Postgis"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); //postgres is case sensitive + config.setParam("Query", "select the_geom from Divisions limit 3"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration Postgres4() { + + System.out.println("TEST 4: Postgis filter query"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); //postgres is case sensitive +// config.setParam("Query", "select the_geom from Divisions limit 30"); + config.setParam("Query", "EXPLAIN ANALYZE select gid from Divisions limit 3"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue1() { + + System.out.println("TEST 5: Postgis NullInputValue1"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + + // a test with postgis +// config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + config.setParam("Query", "EXPLAIN ANALYZE select gid from Divisions limit 3"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue2() { + + System.out.println("TEST 5: Postgis NullInputValue2"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); +// config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + config.setParam("Query", "EXPLAIN ANALYZE select gid from Divisions limit 3"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue3() { + + System.out.println("TEST 5: Postgis NullInputValue3"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); +// config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + config.setParam("Query", "EXPLAIN ANALYZE select gid from Divisions limit 3"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue4() { + + System.out.println("TEST 5: Postgis NullInputValue4"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); +// config.setParam("TableName", "Divisions"); + config.setParam("Query", "EXPLAIN ANALYZE select gid from Divisions limit 3"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue5() { + + System.out.println("TEST 6: Postgis NullInputValue5"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); +// config.setParam("Query", "EXPLAIN ANALYZE select gid from Divisions limit 3"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration Postgis() { + + System.out.println("TEST 7: Postgis"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTSUBMITQUERY"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); //postgres is case sensitive + config.setParam("Query", "select * from \"Divisions\" limit 1"); + + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + + +} diff --git a/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionTableDetails.java b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionTableDetails.java new file mode 100644 index 0000000..66d7901 --- /dev/null +++ b/src/main/java/org/gcube/dataaccess/algorithms/test/regressiontest/RegressionTableDetails.java @@ -0,0 +1,227 @@ +package org.gcube.dataaccess.algorithms.test.regressiontest; + +import java.util.List; + +import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger; +import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration; +import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType; +import org.gcube.dataanalysis.ecoengine.test.regression.Regressor; +import org.gcube.dataanalysis.ecoengine.interfaces.ComputationalAgent; +import org.gcube.dataanalysis.ecoengine.processing.factories.TransducerersFactory; + +public class RegressionTableDetails { + + // static String[] algorithms = { "Postgres1", "Postgres2", "Postgis", + // "Mysql", "NullInputValue", "Postgres3" }; + + // static AlgorithmConfiguration[] configs = { testPostgres1(), + // testPostgres2(), testPostgis(), Mysql(), NullInputValue(), Postgres3()}; + + static String[] algorithms = { "Postgres1" }; + static AlgorithmConfiguration[] configs = { testPostgis() }; + + public static void main(String[] args) throws Exception { + + // System.out.println("TEST 1"); + + for (int i = 0; i < algorithms.length; i++) { + AnalysisLogger.getLogger().debug("Executing:" + algorithms[i]); + + // ComputationalAgent trans = new WPSProcess(wps, algorithms[i]); + + List trans = null; + trans = TransducerersFactory.getTransducerers(configs[i]); + trans.get(0).init(); + + // trans.setConfiguration(configs[i]); + // trans.init(); + Regressor.process(trans.get(0)); + StatisticalType st = trans.get(0).getOutput(); + + // Print Result + AnalysisLogger.getLogger().debug("ST:" + st); + trans = null; + } + + } + + private static AlgorithmConfiguration testPostgres1() { + + System.out.println("TEST 1: Postgres"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("GETTABLEDETAILS"); + + // A test with a database postgres + // config.setParam("ResourceName", "GP DB"); + // + // config.setParam("DatabaseName", "aquamapsdb"); + // config.setParam("SchemaName", "public"); + // config.setParam("TableName", "Divisions"); + + // config.setParam("TableName", "all_world"); + // config.setParam("TableName", "biodiversity_lme"); + + // StatisticalManager + // config.setParam("ResourceName", "StatisticalManagerDataBase"); + // config.setParam("DatabaseName", "testdb"); + // // config.setParam("SchemaName", "publicd"); + // + // config.setParam("SchemaName", "public"); + // + // config.setParam("TableName", "hcaf_d"); + + // config.setParam("TableName", + // "hspec_id_c8e87e16_a0b4_4f9b_b48e_f1cf60ab104c"); + + // // config.setParam("TableName", + // "timeseries_id08b3abb9_c7b0_4b82_8117_64b69055416f"); + // // config.setParam("TableName", + // "occurrence_species_idaf35d737_fb3e_43a7_b13a_611dfa97b064"); + // // config.setParam("TableName", + // "occcluster_id_15271993_5129_4eda_92a2_fe8d22737007"); + // config.setParam("TableName", + // "hspec_id_3f4c79fa_442e_42ba_9344_1b3e64dc3326"); + + //AquaMaps + config.setParam("ResourceName", "AquaMaps Service DataBase"); + config.setParam("DatabaseName", "aquamapsorgupdated"); + config.setParam("SchemaName", "public"); +// config.setParam("TableName", "geometry_columns"); + config.setParam("TableName", "source_generation_requests"); + // //// config.setParam("TableName", "hspec2012_07_11_12_33_05_483"); + // config.setParam("TableName", "hspec_suitable_peng_test_tbsp_1"); + + // Obis +// config.setParam("ResourceName", "Obis2Repository"); +// config.setParam("DatabaseName", "obis"); +// config.setParam("SchemaName", "calc"); +// config.setParam("TableName", "map1d"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration testPostgres2() { + + System.out.println("TEST 2: Postgres"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("TableDetails"); + + // A test with a database postgres + config.setParam("ResourceName", "GP DB"); + + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "area"); // it has not rows + + // config.setParam("TableName", "all_world"); + // config.setParam("TableName", "biodiversity_lme"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration testPostgis() { + + System.out.println("TEST 3: Postgis"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("GETTABLEDETAILS"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + // config.setParam("TableName", "Divisions"); +// config.setParam("TableName", "ContinentalMargins"); + +// config.setParam("TableName", "SeaVoX_sea_areas_polygons_v14"); + config.setParam("TableName", "laldrovandiaoleosa20130718230308233cest "); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration Mysql() { + + System.out.println("TEST 4: Mysql"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("GETTABLEDETAILS"); + + // // a test with postgis + // config.setParam("ResourceName", "Geoserver database "); + // config.setParam("SchemaName", "public"); + // config.setParam("DatabaseName", "aquamapsdb"); + // config.setParam("TableName", "Divisions"); + + // a test with a database mysql +// config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("ResourceName", "CatalogOfLife2010"); + config.setParam("DatabaseName", "col2oct2010"); + // config.setParam("TableName", "Common_names"); //mysql is not case + // sensitive + + config.setParam("TableName", "databases"); + + // config.setParam("Query", "select * from common_names limit 3"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration NullInputValue() { + + System.out.println("TEST 5: Postgis NullInputValue"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTTABLEDETAILS"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + // config.setParam("SchemaName", "public"); + config.setParam("TableName", "Divisions"); + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + + private static AlgorithmConfiguration Postgres3() { + + System.out.println("TEST 6: Postgres"); + + AlgorithmConfiguration config = Regressor.getConfig(); + + config.setAgent("LISTTABLEDETAILS"); + + // a test with postgis + config.setParam("ResourceName", "Geoserver database "); + config.setParam("DatabaseName", "aquamapsdb"); + config.setParam("SchemaName", "public"); + config.setParam("TableName", "divisions"); // postgres is case sensitive + + config.setGcubeScope("/gcube/devsec"); + + return config; + + } + +}