Project

General

Profile

« Previous | Next » 

Revision 37638

[maven-release-plugin] copy for tag dnet-deduplication-1.1.10

View differences:

modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/resources/eu/dnetlib/test/profiles/meta/workflows/apply.actions.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3
    <HEADER>
4
        <RESOURCE_IDENTIFIER value="3e225d27-696a-4d55-96d4-3498a61960d9_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
5
        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
6
        <RESOURCE_KIND value="WorkflowDSResources"/>
7
        <RESOURCE_URI value=""/>
8
        <DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
9
    </HEADER>
10
    <BODY>
11
        <WORKFLOW_NAME>Apply Actions</WORKFLOW_NAME>
12
        <WORKFLOW_TYPE>Deduplication</WORKFLOW_TYPE>
13
        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
14
        <CONFIGURATION start="manual">
15
        
16
			<NODE name="promoteActions" type="PromoteActions" isStart="true">
17
				<DESCRIPTION>Promote actions</DESCRIPTION>
18
				<PARAMETERS>
19
					<PARAM function="obtainValues('dedupOrchestrations', {})" required="false" type="string" name="set" managedBy="user"></PARAM>
20
				</PARAMETERS>
21
				<ARCS>
22
					<ARC to="querySimilarities" />
23
					<ARC to="queryDissimilarities" />
24
				</ARCS>
25
			</NODE>        
26

  
27
            <NODE name="querySimilarities" type="QueryDb">
28
                <DESCRIPTION>query similarity</DESCRIPTION>
29
                <PARAMETERS>
30
                    <PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.dedup.db.name</PARAM>
31
                    <PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/workflows/dedup/querySimilarities.sql</PARAM>
32
                    <PARAM name="outputEprParam" type="string" managedBy="system" required="true">simEpr</PARAM>
33
                </PARAMETERS>
34
                <ARCS>
35
                    <ARC to="buildSimilarityMesh"/>
36
                </ARCS>
37
            </NODE>            
38
            <NODE name="buildSimilarityMesh" type="BuildSimilarityMeshJob">
39
                <DESCRIPTION>build mesh</DESCRIPTION>
40
                <PARAMETERS>
41
                    <PARAM name="inputEprParam" type="string" managedBy="system" required="true">simEpr</PARAM>
42
                    <PARAM name="outputEprParam" type="string" managedBy="system" required="true">simMeshEpr</PARAM>
43
                </PARAMETERS>
44
                <ARCS>
45
                    <ARC to="storeSimilarities"/>
46
                </ARCS>
47
            </NODE>
48
            <NODE name="storeSimilarities" type="StoreHBase">
49
                <DESCRIPTION>store similarity</DESCRIPTION>
50
                <PARAMETERS>
51
                    <PARAM name="inputEprParam" type="string" managedBy="system" required="true">simMeshEpr</PARAM>
52
                    <PARAM name="hbaseTableProperty" type="string" managedBy="system" required="true">hbase.mapred.datatable</PARAM>
53
                    <PARAM name="cluster" type="string" managedBy="system" required="true">DM</PARAM>
54
                    <PARAM name="xslt" type="string" managedBy="system" required="true">/eu/dnetlib/msro/workflows/dedup/similarity_2_hbase.xsl</PARAM>
55
                    <PARAM name="simulation" type="boolean" managedBy="user" required="false">false</PARAM>
56
                </PARAMETERS>
57
                <ARCS>
58
                    <ARC to="success"/>
59
                </ARCS>
60
            </NODE>
61
            
62
            <NODE name="queryDissimilarities" type="QueryDb">
63
                <DESCRIPTION>query dissimilarity</DESCRIPTION>
64
                <PARAMETERS>
65
                    <PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.dedup.db.name</PARAM>
66
                    <PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/workflows/dedup/queryDissimilarities.sql</PARAM>
67
                    <PARAM name="outputEprParam" type="string" managedBy="system" required="true">dissimEpr</PARAM>
68
                </PARAMETERS>
69
                <ARCS>
70
                    <ARC to="storeDissimilarities"/>
71
                </ARCS>
72
            </NODE>            
73
            <NODE name="storeDissimilarities" type="DeleteFromHBase">
74
                <DESCRIPTION>store dissimilarity</DESCRIPTION>
75
                <PARAMETERS>
76
                    <PARAM name="inputEprParam" type="string" managedBy="system" required="true">dissimEpr</PARAM>
77
                    <PARAM name="hbaseTableProperty" type="string" managedBy="system" required="true">hbase.mapred.datatable</PARAM>
78
                    <PARAM name="cluster" type="string" managedBy="system" required="true">DM</PARAM>
79
                    <PARAM name="xslt" type="string" managedBy="system" required="true">/eu/dnetlib/msro/workflows/dedup/dissimilarity_2_hbase.xsl</PARAM>
80
                    <PARAM name="simulation" type="boolean" managedBy="user" required="false">false</PARAM>
81
                </PARAMETERS>
82
                <ARCS>
83
                    <ARC to="success"/>
84
                </ARCS>
85
            </NODE>             
86
                 
87
        </CONFIGURATION>
88
        <STATUS />
89
    </BODY>
90
</RESOURCE_PROFILE>
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/resources/eu/dnetlib/test/profiles/meta/workflows/dedup.roots.csv.export.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3
	<HEADER>
4
		<RESOURCE_IDENTIFIER value="374d07a1-2a76-470a-ab54-a7d6c35eab9b_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" />
5
		<RESOURCE_TYPE value="WorkflowDSResourceType" />
6
		<RESOURCE_KIND value="WorkflowDSResources" />
7
		<RESOURCE_URI value="" />
8
		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z" />
9
	</HEADER>
10
	<BODY>
11
		<WORKFLOW_NAME>Deduplication export</WORKFLOW_NAME>
12
		<WORKFLOW_TYPE>Deduplication</WORKFLOW_TYPE>
13
		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
14
		<CONFIGURATION start="manual">
15
        	<NODE name="setCsvPath" type="SetEnvParameter" isStart="true">
16
				<DESCRIPTION>Set the CSV file path on HDFS</DESCRIPTION>
17
				<PARAMETERS>
18
					<PARAM managedBy="system" name="parameterName" required="true" type="string">csvPath</PARAM>
19
					<PARAM managedBy="user" name="parameterValue" required="true" type="string"></PARAM>
20
				</PARAMETERS>
21
				<ARCS>
22
					<ARC to="cleanupCsv" />
23
				</ARCS>
24
			</NODE>
25
			
26
			<NODE name="setDedupConfigs" type="SetDedupConfiguration" isStart="true">
27
				<DESCRIPTION>Set Dedup conf</DESCRIPTION>
28
				<PARAMETERS>
29
					<PARAM function="validValues(['result', 'organization', 'person'])" required="true" type="string" name="entityType" managedBy="user"></PARAM>
30
					<PARAM required="true" type="string" name="dedupConfigSequence" managedBy="user"></PARAM>
31
					<PARAM required="true" type="string" name="dedupConfigSequenceParam" managedBy="system">dedup.conf.queue</PARAM>
32
				</PARAMETERS>
33
				<ARCS>
34
					<ARC to="cleanupCsv" />
35
				</ARCS>
36
			</NODE>
37
			
38
			<NODE name="hadoopConfig" type="SetClusterAndTable" isStart="true">
39
				<DESCRIPTION>Set table name</DESCRIPTION>
40
				<PARAMETERS>
41
					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
42
					<PARAM required="true" type="string" name="table" managedBy="user">db_stdl</PARAM>
43
					<PARAM required="true" type="string" name="tableParam" managedBy="system">tableName</PARAM>
44
				</PARAMETERS>
45
				<ARCS>
46
					<ARC to="cleanupCsv" />
47
				</ARCS>
48
			</NODE>				
49
			
50
			<NODE name="cleanupCsv" type="DeleteHdfsPathJob">
51
				<DESCRIPTION>CSV files cleanup</DESCRIPTION>
52
				<PARAMETERS>
53
					<PARAM required="true" type="string" name="envParams" managedBy="system">
54
						{ 	
55
							'path' : 'csvPath',
56
							'cluster' : 'cluster'
57
						}
58
					</PARAM>					
59
				</PARAMETERS>
60
				<ARCS>
61
					<ARC to="roots2CSV" />
62
				</ARCS>
63
			</NODE>
64
				
65
			<NODE name="roots2CSV" type="SubmitHadoopJob">
66
				<DESCRIPTION>export the representative entities as CSV files</DESCRIPTION>
67
				<PARAMETERS>
68
					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupRootsToCSVJob</PARAM>
69
					<PARAM required="true" type="string" name="sysParams" managedBy="system">
70
						{ 	
71
							'hbase.mapred.inputtable' : 'hbase.mapred.datatable', 
72
							'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable'
73
						}
74
					</PARAM>					
75
					<PARAM required="true" type="string" name="envParams" managedBy="system">
76
						{ 	
77
							'cluster' : 'cluster',
78
							'dedup.wf.conf' : 'dedup.wf.conf',
79
							'relClasses' : 'relClasses',
80
							'entityTypeId' : 'entityTypeId',
81
							'entityType' : 'entityType',
82
							'hbase.mapred.inputtable' : 'tableName', 
83
							'hbase.mapreduce.inputtable' : 'tableName',
84
							'mapred.output.dir' : 'csvPath'
85
						}
86
					</PARAM>
87
					<PARAM required="true" type="string" name="params" managedBy="system">
88
						{ 	
89
							'entityTypeId' : '50',
90
							'entityType' : 'result'						 
91
						}
92
					</PARAM>										
93
				</PARAMETERS>
94
				<ARCS>
95
					<ARC to="success" />
96
				</ARCS>
97
			</NODE>
98
		</CONFIGURATION>
99
		<STATUS />
100
	</BODY>
101
</RESOURCE_PROFILE>
102

  
103

  
104

  
105

  
106

  
107

  
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/resources/eu/dnetlib/test/profiles/meta/offline.dedup.meta.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<RESOURCE_PROFILE>
3
	<HEADER>
4
		<RESOURCE_IDENTIFIER value="80f76a00-0eb3-4df0-a256-99f1df7b5fd8_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU=" />
5
		<RESOURCE_TYPE value="MetaWorkflowDSResourceType" />
6
		<RESOURCE_KIND value="MetaWorkflowDSResources" />
7
		<RESOURCE_URI value="" />
8
		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z" />
9
	</HEADER>
10
	<BODY>
11
		<METAWORKFLOW_NAME family="Deduplication">Deduplication</METAWORKFLOW_NAME>
12
		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
13
		<METAWORKFLOW_SECTION>InfoSpace Deduplication</METAWORKFLOW_SECTION>
14
		<ADMIN_EMAIL />
15
		<CONFIGURATION status="EXECUTABLE">
16
            <WORKFLOW id="ce304c65-5836-4cf0-9a48-53472b9f6f36_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="reset">
17
                <WORKFLOW id="ba9a285a-f71a-4c53-b543-35ec06876f4e_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="selective db2hbase"/>
18
                <WORKFLOW id="c7d7d775-2db3-474d-85ab-5173a582d516_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="oaf2hbase">
19
                    <WORKFLOW id="ab5d7de1-b23e-495a-9928-be62a6bbd8b6_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="offline deduplication"/>
20
                </WORKFLOW>
21
            </WORKFLOW>
22
		</CONFIGURATION>
23
		<SCHEDULING enabled="false">
24
			<CRON>29 5 22 ? * *</CRON>
25
			<MININTERVAL>10080</MININTERVAL>
26
		</SCHEDULING>
27
	</BODY>
28
</RESOURCE_PROFILE>
29

  
30
<!-- <WORKFLOW id="374d07a1-2a76-470a-ab54-a7d6c35eab9b_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="export"/> -->
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/resources/patch.dedup.sql
1
-- createdb dnet_dedup
2
-- manage db with dbService
3

  
4
CREATE TABLE entities (
5
    id character varying(255) NOT NULL,
6
    entitytype character varying(255) NOT NULL,
7
    _dnet_resource_identifier_ character varying(2048) DEFAULT ((('temp_'::text || md5((clock_timestamp())::text)) || '_'::text) || md5((random())::text)),
8
    PRIMARY KEY(id)
9
);
10

  
11
CREATE TABLE groups (
12
    id character varying(255) NOT NULL,
13
    entitytype character varying(255) NOT NULL,
14
    actionsetid character varying(255) NOT NULL,
15
    date timestamp without time zone default now(),
16
    _dnet_resource_identifier_ character varying(2048) DEFAULT ((('temp_'::text || md5((clock_timestamp())::text)) || '_'::text) || md5((random())::text)),
17
    PRIMARY KEY(id)
18
);
19

  
20
CREATE TABLE similarity_groups (
21
    groupid character varying(255) NOT NULL REFERENCES groups(id) ON DELETE CASCADE,
22
    objidentifier character varying(255) NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
23
    _dnet_resource_identifier_ character varying(2048) DEFAULT ((('temp_'::text || md5((clock_timestamp())::text)) || '_'::text) || md5((random())::text)),
24
    PRIMARY KEY(groupid, objidentifier)
25
);
26

  
27
CREATE TABLE dissimilarities (
28
    id1 character varying(255) NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
29
    id2 character varying(255) NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
30
    actionsetid character varying(255) NOT NULL,
31
    _dnet_resource_identifier_ character varying(2048) DEFAULT ((('temp_'::text || md5((clock_timestamp())::text)) || '_'::text) || md5((random())::text)),
32
    PRIMARY KEY(id1, id2, actionsetid)
33
);
34

  
35

  
36

  
37

  
38

  
39

  
40

  
41

  
42

  
43

  
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/functionality/modular/ui/dedup/SimilarityGroup.java
1
package eu.dnetlib.functionality.modular.ui.dedup;
2

  
3
import java.util.Map;
4
import java.util.Set;
5

  
6
public class SimilarityGroup {
7

  
8
	private String id;
9
	private String date;
10
	private EntityType entityType;
11

  
12
	private String actionSet;
13

  
14
	private Set<String> group;
15

  
16
	private Set<String> rootIds;
17

  
18
	private Map<String, Set<String>> dissimilar;
19

  
20
	public SimilarityGroup() {}
21

  
22
	public String getId() {
23
		return id;
24
	}
25

  
26
	public void setId(final String id) {
27
		this.id = id;
28
	}
29

  
30
	public String getDate() {
31
		return date;
32
	}
33

  
34
	public void setDate(final String date) {
35
		this.date = date;
36
	}
37

  
38
	public Set<String> getGroup() {
39
		return group;
40
	}
41

  
42
	public void setGroup(final Set<String> group) {
43
		this.group = group;
44
	}
45

  
46
	public EntityType getEntityType() {
47
		return entityType;
48
	}
49

  
50
	public void setEntityType(final EntityType entityType) {
51
		this.entityType = entityType;
52
	}
53

  
54
	public Set<String> getRootIds() {
55
		return rootIds;
56
	}
57

  
58
	public void setRootIds(final Set<String> rootIds) {
59
		this.rootIds = rootIds;
60
	}
61

  
62
	public Map<String, Set<String>> getDissimilar() {
63
		return dissimilar;
64
	}
65

  
66
	public void setDissimilar(final Map<String, Set<String>> dissimilar) {
67
		this.dissimilar = dissimilar;
68
	}
69

  
70
	public String getActionSet() {
71
		return actionSet;
72
	}
73

  
74
	public void setActionSet(final String actionSet) {
75
		this.actionSet = actionSet;
76
	}
77

  
78
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/resources/eu/dnetlib/functionality/modular/ui/views/ui/dedupInspector.st
1
$common/master( header={
2
	<script type="text/javascript" src="../resources/js/angular.min.js" ></script>
3
	<script type="text/javascript" src="../resources/js/angular-route.min.js"></script>
4
	
5
	<script type="text/javascript" src="../resources/js/ui-bootstrap.min.js"></script>
6
	<script type="text/javascript" src="../resources/js/jquery-ui-1.10.4.min.js"></script>
7
		
8
	<script type="text/javascript" src="../resources/js/dedup_inspector_controllers.js"></script>
9
	<script type="text/javascript" src="../resources/js/dedup_inspector.js"></script>
10
	
11
	<link rel="stylesheet" type="text/css" href="../resources/css/jquery-ui-1.10.4.min.css" />
12
		
13
	<style>
14
		#wfJournalTable {
15
			width: 100%; 
16
			height: 500px;
17
			margin-bottom: 20px;
18
			font-size: 11px;
19
		}
20
		
21
		#wfLogDetails {
22
			width: 100%; 
23
			height: 300px;
24
			margin-bottom: 20px;
25
			font-size: 11px;
26
		}
27
	</style>	
28
	
29
}, body={
30
	<div ng-app="dedupInspector" class="row">
31
		
32
		<div ng-controller="moduleMenuCtrl">
33
		
34
			<div class="col-sm-3 col-lg-2">
35
	
36
				<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true" style="cursor: pointer;">
37
				  
38
				  <div class="panel panel-default" ng-repeat="(entity, confList) in configurations">
39
				    <div class="panel-heading" role="tab" id="{{entity}}Heading" data-toggle="collapse" data-target="#{{entity}}ActionSets" data-parent="#accordion">
40
				      <h4 class="panel-title">{{entity}}</h4>
41
				    </div>
42
				    <div id="{{entity}}ActionSets" class="panel-collapse collapse" ng-class="{'in' : contains(confList, app.activeConf)}" role="tabpanel" aria-labelledby="{{entity}}Heading">
43
						<ul class="list-group">
44
							<li ng-repeat="conf in confList" class="list-group-item"><a href="#/add/{{entity}}/{{conf}}">{{conf}}</a></li>
45
						</ul>
46
				    </div>
47
				  </div>			  
48
				  		  
49
				</div>
50
	
51
			</div>
52
			<div ng-view class="col-sm-9 col-lg-10"></div>
53
		</div>
54
	</div>
55
} )$
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/resources/eu/dnetlib/functionality/modular/ui/webContext-modular-ui-dedup.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<beans xmlns="http://www.springframework.org/schema/beans"
3
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
4
	xmlns:sec="http://cxf.apache.org/configuration/security" xmlns:wsa="http://cxf.apache.org/ws/addressing"
5
	xmlns:p="http://www.springframework.org/schema/p" xmlns:http="http://cxf.apache.org/transports/http/configuration"
6
	xmlns:t="http://dnetlib.eu/springbeans/t" xmlns:template="http://dnetlib.eu/springbeans/template"
7
	xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context"
8
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
9
						http://cxf.apache.org/ws/addressing http://cxf.apache.org/schemas/ws-addr-conf.xsd
10
						http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd
11
						http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
12
						http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
13
						http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd
14
						http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
15
						http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
16

  
17

  
18
	<bean name="/ui/dedupInspector.do"
19
		class="eu.dnetlib.functionality.modular.ui.dedup.DedupServiceEntryPointController"
20
		p:menu="Dedup Service Inspector" 
21
		p:title="Dedup Service Inspector"
22
		p:description="Dedup Service Inspector"
23
		p:order="5" 
24
		p:group="Tools">
25
		<property name="permissionLevels">
26
			<set>
27
				<value>IS_ADMIN</value>
28
			</set>
29
		</property>
30
	</bean>
31
	
32
</beans>
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/functionality/modular/ui/dedup/DedupServiceEntryPointController.java
1
package eu.dnetlib.functionality.modular.ui.dedup;
2

  
3
import javax.servlet.http.HttpServletRequest;
4
import javax.servlet.http.HttpServletResponse;
5

  
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.ui.ModelMap;
8

  
9
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
10
import eu.dnetlib.functionality.modular.ui.ModuleEntryPoint;
11

  
12
public class DedupServiceEntryPointController extends ModuleEntryPoint {
13

  
14
	@Autowired
15
	private UniqueServiceLocator serviceLocator;
16

  
17
	@Override
18
	protected void initialize(final ModelMap map, final HttpServletRequest request, final HttpServletResponse response) throws Exception {}
19

  
20
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/functionality/modular/ui/workflows/values/ListHBaseMappingTitleValues.java
1
package eu.dnetlib.functionality.modular.ui.workflows.values;
2

  
3
import java.util.List;
4
import java.util.Map;
5

  
6
import javax.annotation.Resource;
7

  
8
import com.google.common.collect.Lists;
9

  
10
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
11
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
12
import eu.dnetlib.msro.workflows.util.ValidNodeValuesFetcher;
13

  
14
public class ListHBaseMappingTitleValues extends ValidNodeValuesFetcher {
15

  
16
	@Resource
17
	private UniqueServiceLocator serviceLocator;
18

  
19
	@Override
20
	protected List<DnetParamValue> obtainValues(final Map<String, String> params) throws Exception {
21

  
22
		final String xquery =
23
				"for $x in /RESOURCE_PROFILE["
24
						+ ".//RESOURCE_TYPE/@value='TransformationRuleDSResourceType' and "
25
						+ ".//SOURCE_METADATA_FORMAT/@name = 'oaf' and "
26
						+ ".//SOURCE_METADATA_FORMAT/@layout = 'store' and "
27
						+ ".//SOURCE_METADATA_FORMAT/@interpretation = 'cleaned'] "
28
						+ "return concat($x//RESOURCE_IDENTIFIER/@value, ' @@@ ', $x//SCRIPT/TITLE/text())";
29

  
30
		final List<String> result = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery);
31
		final List<DnetParamValue> values = Lists.newArrayList();
32

  
33
		for (final String s : result) {
34
			final String[] arr = s.split("@@@");
35
			values.add(new DnetParamValue(arr[0].trim(), arr[1].trim()));
36
		}
37

  
38
		return values;
39
	}
40

  
41
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/functionality/modular/ui/workflows/values/ListDedupConfigValues.java
1
package eu.dnetlib.functionality.modular.ui.workflows.values;
2

  
3
import java.util.List;
4
import java.util.Map;
5

  
6
import javax.annotation.Resource;
7

  
8
import com.google.common.collect.Lists;
9

  
10
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
11
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
12
import eu.dnetlib.msro.workflows.util.ValidNodeValuesFetcher;
13

  
14
public class ListDedupConfigValues extends ValidNodeValuesFetcher {
15

  
16
	@Resource
17
	private UniqueServiceLocator serviceLocator;
18

  
19
	@Override
20
	protected List<DnetParamValue> obtainValues(final Map<String, String> params) throws Exception {
21

  
22
		final String xquery =
23
				"for $x in /RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='DedupConfigurationDSResourceType'] return concat($x//CONFIGURATION/@id, ' @@@ ', $x//DESCRIPTION) ";
24

  
25
		final List<String> result = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery);
26
		final List<DnetParamValue> values = Lists.newArrayList();
27

  
28
		for (final String s : result) {
29
			final String[] arr = s.split("@@@");
30
			values.add(new DnetParamValue(arr[0].trim(), arr[1].trim()));
31
		}
32

  
33
		return values;
34
	}
35

  
36
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/functionality/modular/ui/workflows/values/ListDedupOrchestrationValues.java
1
package eu.dnetlib.functionality.modular.ui.workflows.values;
2

  
3
import java.util.List;
4
import java.util.Map;
5

  
6
import javax.annotation.Resource;
7

  
8
import com.google.common.collect.Lists;
9

  
10
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
11
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
12
import eu.dnetlib.msro.workflows.util.ValidNodeValuesFetcher;
13

  
14
public class ListDedupOrchestrationValues extends ValidNodeValuesFetcher {
15

  
16
	@Resource
17
	private UniqueServiceLocator serviceLocator;
18

  
19
	@Override
20
	protected List<DnetParamValue> obtainValues(final Map<String, String> params) throws Exception {
21

  
22
		final String xquery =
23
				"for $x in /RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='DedupOrchestrationDSResourceType'] return $x//ACTION_SET/@id/string()";
24

  
25
		final List<String> result = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery);
26
		final List<DnetParamValue> values = Lists.newArrayList();
27

  
28
		for (final String s : result) {
29
			values.add(new DnetParamValue(s, s));
30
		}
31

  
32
		return values;
33
	}
34

  
35
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/functionality/modular/ui/workflows/values/ListHBaseTables.java
1
package eu.dnetlib.functionality.modular.ui.workflows.values;
2

  
3
import java.util.List;
4
import java.util.Map;
5

  
6
import javax.annotation.Resource;
7

  
8
import org.apache.commons.logging.Log;
9
import org.apache.commons.logging.LogFactory;
10

  
11
import com.google.common.base.Function;
12
import com.google.common.collect.Iterables;
13
import com.google.common.collect.Lists;
14

  
15
import eu.dnetlib.data.hadoop.rmi.HadoopService;
16
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
17
import eu.dnetlib.msro.workflows.util.ValidNodeValuesFetcher;
18

  
19
public class ListHBaseTables extends ValidNodeValuesFetcher {
20

  
21
	/**
22
	 * logger.
23
	 */
24
	private static final Log log = LogFactory.getLog(ListHBaseTables.class);
25

  
26
	@Resource
27
	private UniqueServiceLocator serviceLocator;
28

  
29
	private Function<String, DnetParamValue> f = new Function<String, DnetParamValue>() {
30

  
31
		@Override
32
		public DnetParamValue apply(final String s) {
33

  
34
			return new DnetParamValue(s, s);
35
		}
36
	};
37

  
38
	@Override
39
	protected List<DnetParamValue> obtainValues(final Map<String, String> params) throws Exception {
40
		List<DnetParamValue> res = Lists.newArrayList(Iterables.transform(listTables(params.get("cluster")), f));
41
		return res;
42
	}
43

  
44
	private List<String> listTables(final String cluster) {
45
		try {
46
			log.info("list tables for cluster: " + cluster);
47
			return serviceLocator.getService(HadoopService.class).listHbaseTables(cluster);
48
		} catch (Throwable e) {
49
			log.error(e);
50
			return Lists.newArrayList();
51
		}
52
	}
53
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
	<parent>
4
		<groupId>eu.dnetlib</groupId>
5
		<artifactId>dnet-parent</artifactId>
6
		<version>1.0.0</version>
7
		<relativePath />
8
	</parent>
9
	<modelVersion>4.0.0</modelVersion>
10
	<groupId>eu.dnetlib</groupId>
11
	<artifactId>dnet-deduplication</artifactId>
12
	<packaging>jar</packaging>
13
	<version>1.1.10</version>
14
	<scm>
15
		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/dnet-deduplication/tags/dnet-deduplication-1.1.10</developerConnection>
16
	</scm>
17
	<dependencies>
18
		<dependency>
19
			<groupId>eu.dnetlib</groupId>
20
			<artifactId>dnet-msro-service</artifactId>
21
			<version>[3.0.0,4.0.0)</version>
22
		</dependency>
23
		<dependency>
24
			<groupId>eu.dnetlib</groupId>
25
			<artifactId>dnet-hadoop-service-rmi</artifactId>
26
			<version>[1.0.0,2.0.0)</version>
27
		</dependency>
28
		<dependency>
29
			<groupId>eu.dnetlib</groupId>
30
			<artifactId>dnet-actionmanager-api</artifactId>
31
			<version>[3.0.0,4.0.0)</version>
32
		</dependency>
33
		<dependency>
34
			<groupId>eu.dnetlib</groupId>
35
			<artifactId>dnet-modular-ui</artifactId>
36
			<version>[3.0.0,4.0.0)</version>
37
		</dependency>
38

  
39
		<dependency>
40
			<groupId>eu.dnetlib</groupId>
41
			<artifactId>dnet-index-solr-client</artifactId>
42
			<version>[2.0.0,3.0.0)</version>
43
		</dependency>
44

  
45
		<dependency>
46
			<groupId>eu.dnetlib</groupId>
47
			<artifactId>dnet-openaireplus-mapping-utils</artifactId>
48
			<version>[3.0.0,4.0.0)</version>
49
		</dependency>
50

  
51

  
52
		<dependency>
53
			<groupId>javax.servlet</groupId>
54
			<artifactId>javax.servlet-api</artifactId>
55
			<version>${javax.servlet.version}</version>
56
			<scope>provided</scope>
57
		</dependency>
58
		<dependency>
59
			<groupId>com.fasterxml.jackson.core</groupId>
60
			<artifactId>jackson-databind</artifactId>
61
			<version>2.4.3</version>
62
		</dependency>
63
		<dependency>
64
			<groupId>com.google.guava</groupId>
65
			<artifactId>guava</artifactId>
66
			<version>${google.guava.version}</version>
67
		</dependency>
68

  
69
		<dependency>
70
			<groupId>junit</groupId>
71
			<artifactId>junit</artifactId>
72
			<version>${junit.version}</version>
73
			<scope>test</scope>
74
		</dependency>
75

  
76
	</dependencies>
77
</project>
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/resources/eu/dnetlib/web/resources/html/dedup/add.html
1
<nav class="navbar navbar-default" role="navigation">
2
	<div class="collapse navbar-collapse">
3

  
4
		<div class="col-sm-3">
5
			<a class="navbar-brand">{{group.entityType.label}}</a><a class="navbar-brand" ng-show="results.total > 0">{{results.total}}</a>
6
		</div>
7
		<ul class="nav navbar-nav col-sm-2">
8
			<li role="presentation" class="active dropdown"><a
9
				class="dropdown-toggle" data-toggle="dropdown" role="button"
10
				aria-expanded="false"> Group <span class="badge">{{group.group.length}}</span>
11
					<span class="caret"></span>
12
			</a>
13
				<ul class="dropdown-menu" role="menu">
14
					<li><a data-toggle="modal" data-target="#showGroupModal">Show</a></li>
15
					<li><a ng-click="resetForm()">Reset</a></li>
16
					<li class="divider"></li>
17
					<li><a ng-click="commit()">Commit</a></li>
18
				</ul></li>
19
		</ul>
20

  
21
		<div class="col-sm-2 col-md-2">
22
			<form class="navbar-form">
23
				<button class="btn btn-info" ng-class="{disabled:start < 20}"
24
					ng-click="go('/add/' + group.entityType.type + '/' + group.actionSet + '/' + (start-rows) + '/' + query)">
25
					&laquo; Pevious</button>
26
				<button class="btn btn-info"
27
					ng-class="{disabled:groups.length < rows}"
28
					ng-click="go('/add/' + group.entityType.type + '/' + group.actionSet + '/' + (start+rows) + '/' + query)">
29
					Next &raquo;</button>
30
			</form>
31
		</div>
32

  
33
		<div class="col-sm-5 col-md-5 pull-right">
34
			<form class="navbar-form" role="search">
35
				<div class="input-group">
36
					<input type="text" class="form-control" placeholder="Search"
37
						id="inputFreeSearch" ng-model="query">
38
					<div class="input-group-btn">
39
						<button class="btn btn-default"
40
							ng-click="go('/add/' + group.entityType.type + '/' + group.actionSet + '/0/' + query)">
41
							<i class="glyphicon glyphicon-search"></i>
42
						</button>
43
					</div>
44
				</div>
45
			</form>
46
		</div>
47
	</div>
48
</nav>
49

  
50
<div class="row">
51

  
52
	<div class="col-xs-12" ng-show="results && results.results.length > 0">
53

  
54
		<ng-dedup-records-table ng-show="group.entityType.type == 'result'"
55
			theads="Group size,Title,Publication date,Abstract"
56
			fields="groupSize,title,dateofacceptance,description"
57
			results="results.results" group="group"
58
			show-merged-fn="showRootModal" add-to-group-fn="add"
59
			remove-from-group-fn="remove"></ng-dedup-records-table>
60
		<ng-dedup-records-table
61
			ng-show="group.entityType.type == 'organization'"
62
			theads="Group size,Legal name,Legal short name,Website URL"
63
			fields="groupSize,legalname,legalshortname,websiteurl"
64
			results="results.results" group="group"
65
			show-merged-fn="showRootModal" add-to-group-fn="add"
66
			remove-from-group-fn="remove"></ng-dedup-records-table>
67
		<ng-dedup-records-table
68
			ng-show="group.entityType.type == 'person'"
69
			theads="Group size,Fullname"
70
			fields="groupSize,fullname"
71
			results="results.results" group="group"
72
			show-merged-fn="showRootModal" add-to-group-fn="add"
73
			remove-from-group-fn="remove"></ng-dedup-records-table>			
74

  
75
	</div>
76
</div>
77

  
78
<div class="modal fade" id="showGroupModal">
79
	<div class="modal-dialog modal-lg">
80
		<div class="modal-content">
81
			<div class="modal-header">
82
				<button type="button" class="close" data-dismiss="modal"
83
					aria-label="Close">
84
					<span aria-hidden="true">&times;</span>
85
				</button>
86
				<h4 class="modal-title">Group {{group.entityType.label}}</h4>
87
			</div>
88
			<div class="modal-body" style="height: 500px; overflow-y: auto">
89

  
90
				<div class="col-xs-12" ng-show="groupIdDetails">
91

  
92
					<ng-dedup-records-table ng-show="group.entityType.type == 'result'"
93
						theads="Group size,Title,Publication date,Abstract"
94
						fields="groupSize,title,dateofacceptance,description"
95
						results="group.detailList" group="group" removal="removalGroup"
96
						add-to-removal-group-fn="addToRemovalGroup" remove-from-removal-group-fn="removeFromRemovalGroup"></ng-dedup-records-table>
97
					<ng-dedup-records-table
98
						ng-show="group.entityType.type == 'organization'"
99
						theads="Group size,Legal name,Legal short name,Website URL"
100
						fields="groupSize,legalname,legalshortname,websiteurl"
101
						results="group.detailList" group="group" removal="removalGroup"
102
						add-to-removal-group-fn="addToRemovalGroup" remove-from-removal-group-fn="removeFromRemovalGroup"></ng-dedup-records-table>
103
					<ng-dedup-records-table
104
						ng-show="group.entityType.type == 'person'"
105
						theads="Group size,Fullname"
106
						fields="groupSize,fullname"
107
						results="group.detailList" group="group" removal="removalGroup"
108
						add-to-removal-group-fn="addToRemovalGroup" remove-from-removal-group-fn="removeFromRemovalGroup"></ng-dedup-records-table>
109
				</div>
110
			</div>
111
			<div class="modal-footer">
112
				<button type="button" class="btn btn-default" data-dismiss="modal" ng-click="removeAndDeassociate(group.group)">Apply</button>
113
				<button type="button" class="btn btn-default" data-dismiss="modal" ng-click="dropRemovalGroup()">Undo</button>
114
			</div>
115
		</div>
116
	</div>
117
</div>
118

  
119
<div class="modal fade" id="showRootModal">
120
	<div class="modal-dialog modal-lg">
121
		<div class="modal-content">
122
			<div class="modal-header">
123
				<button type="button" class="close" data-dismiss="modal"
124
					aria-label="Close">
125
					<span aria-hidden="true">&times;</span>
126
				</button>
127
				<h4 class="modal-title">Group {{group.entityType.label}}</h4>
128
			</div>
129
			<div class="modal-body" style="height: 500px; overflow-y: auto">
130

  
131
				<div class="col-xs-12" ng-show="groupIdDetails">
132

  
133
					<ng-dedup-records-table ng-show="group.entityType.type == 'result'"
134
						theads="Group size,Title,Publication date,Authors,Abstract"
135
						fields="groupSize,title,dateofacceptance,author,description"
136
						results="groupIdDetails.list" group="group"></ng-dedup-records-table>
137
					<ng-dedup-records-table
138
						ng-show="group.entityType.type == 'organization'"
139
						theads="Group size,Legal name,Legal short name,Website URL"
140
						fields="groupSize,legalname,legalshortname,websiteurl"
141
						results="groupIdDetails.list" group="group"></ng-dedup-records-table>
142
					<ng-dedup-records-table
143
						ng-show="group.entityType.type == 'person'"
144
						theads="Group size,Fullname"
145
						fields="groupSize,fullname"
146
						results="groupIdDetails.list" group="group"></ng-dedup-records-table>
147
						
148
				</div>
149
			</div>
150
			<div class="modal-footer">
151
				<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
152
			</div>
153
		</div>
154
	</div>
155
</div>
156

  
157

  
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/msro/workflows/hadoop/hbase/GetHBaseTableDescriptionJobNode.java
1
package eu.dnetlib.msro.workflows.hadoop.hbase;
2

  
3
import java.util.List;
4

  
5
import org.apache.commons.logging.Log;
6
import org.apache.commons.logging.LogFactory;
7

  
8
import com.googlecode.sarasvati.Arc;
9
import com.googlecode.sarasvati.NodeToken;
10

  
11
import eu.dnetlib.data.hadoop.rmi.HadoopService;
12

  
13
public class GetHBaseTableDescriptionJobNode extends AbstractHBaseAdminJobNode {
14

  
15
	private static final Log log = LogFactory.getLog(GetHBaseTableDescriptionJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
16

  
17
	@Override
18
	protected String execute(final NodeToken token) throws Exception {
19
		final String tableName = tableName(token);
20
		final String cluster = cluster(token);
21

  
22
		log.info("getting table description: '" + tableName + "' on cluster: '" + cluster + "'");
23

  
24
		final List<String> columns = getServiceLocator().getService(HadoopService.class).describeHbaseTable(cluster, tableName);
25
		log.debug(String.format("table '%s': " + columns, tableName));
26
		token.getEnv().setAttribute(getTableColumnsParamName(), asCSV(columns));
27

  
28
		return Arc.DEFAULT_ARC;
29
	}
30

  
31
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/msro/workflows/hadoop/hbase/DropHBaseTableJobNode.java
1
package eu.dnetlib.msro.workflows.hadoop.hbase;
2

  
3
import org.apache.commons.logging.Log;
4
import org.apache.commons.logging.LogFactory;
5

  
6
import com.googlecode.sarasvati.Arc;
7
import com.googlecode.sarasvati.NodeToken;
8

  
9
import eu.dnetlib.data.hadoop.rmi.HadoopService;
10

  
11
/**
12
 * The Class DropHBaseTableJobNode.
13
 */
14
public class DropHBaseTableJobNode extends AbstractHBaseAdminJobNode {
15

  
16
	/** The Constant log. */
17
	private static final Log log = LogFactory.getLog(DropHBaseTableJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
18

  
19
	/*
20
	 * (non-Javadoc)
21
	 * 
22
	 * @see eu.dnetlib.msro.workflows.nodes.SimpleJobNode#execute(com.googlecode.sarasvati.NodeToken)
23
	 */
24
	@Override
25
	protected String execute(final NodeToken token) throws Exception {
26

  
27
		final String tableName = tableName(token);
28
		final String cluster = cluster(token);
29

  
30
		log.info("Dropping hbase table '" + tableName + "' on cluster: '" + cluster + "'");
31

  
32
		getServiceLocator().getService(HadoopService.class).dropHbaseTable(cluster, tableName);
33

  
34
		return Arc.DEFAULT_ARC;
35
	}
36

  
37
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/resources/eu/dnetlib/web/resources/html/dedup/recordTable.html
1
<style>
2
// Mixin
3
.text-overflow() {
4
  overflow: hidden;
5
  text-overflow: ellipsis;
6
  white-space: nowrap;
7
}
8
</style>
9
<table class="table table-condensed">
10
	<thead>
11
		<tr>
12
			<th ng-show="showMergedFn">Show</th>
13
			<th ng-repeat="th in headers">{{th}}</th>
14
		</tr>
15
	</thead>
16
	<tbody>
17
	<!-- ng-class="{ success:contains(r.id) }" -->
18
		<tr ng-repeat="r in results">
19
		
20
			<td class="text-left" ng-show="showMergedFn">
21
				<button class="btn btn-info btn-sm" ng-show="r.groupSize > 1" ng-click="showMergedFn(r.idList)">
22
					<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
23
				</button>
24
			</td>
25

  
26
			<td ng-repeat="f in fnames">{{r[f]}}</td>
27

  
28
			<td class="text-right">
29
				<button class="btn btn-primary btn-sm"
30
					ng-click="addToGroupFn(r.id, r.idList)"
31
					ng-hide="containsList(r.idList, group.group) || (!addToGroupFn)">
32
					<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
33
				</button>
34
				<button class="btn btn-primary btn-sm btn-danger"
35
					ng-click="removeFromGroupFn(r.id, r.idList)"
36
					ng-show="containsList(r.idList, group.group) && addToGroupFn">
37
					<span class="glyphicon glyphicon-minus" aria-hidden="true"></span>
38
				</button>
39
				<button class="btn btn-primary btn-sm btn-warning"
40
					ng-click="addToRemovalGroupFn(r.id)"
41
					ng-show="!containsList(r.id, removal) && addToRemovalGroupFn">
42
					<span class="glyphicon glyphicon-minus" aria-hidden="true"></span>
43
				</button>
44
				<button class="btn btn-primary btn-sm"
45
					ng-click="removeFromRemovalGroupFn(r.id)"
46
					ng-show="containsList(r.id, removal) && addToRemovalGroupFn">
47
					<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
48
				</button>				
49
			</td>
50

  
51
		</tr>
52
	</tbody>
53
</table>
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/resources/eu/dnetlib/web/resources/js/dedup_inspector.js
1
var module = angular.module('dedupInspector', ['ngRoute', 'dedupInspectorControllers']);
2

  
3
module.run(function($rootScope) {
4
	$rootScope.Utils = {
5
		keys : Object.keys,
6
		values : Object.values
7
	}
8
});	
9

  
10
module.config([
11
	'$routeProvider',
12
	function($routeProvider) {
13
		$routeProvider
14
			.when('/add/:entityType',							{ templateUrl: '../resources/html/dedup/add.html', controller: 'addSimRelsCtrl' })
15
			.when('/add/:entityType/:actionSet',				{ templateUrl: '../resources/html/dedup/add.html', controller: 'addSimRelsCtrl' })
16
			.when('/add/:entityType/:actionSet/:start/:query*',	{ templateUrl: '../resources/html/dedup/add.html', controller: 'addSimRelsCtrl' });
17
			//.otherwise({ redirectTo: '/manage/all/0/10' });
18
	}
19
]);
20

  
21
module.controller('moduleMenuCtrl', [ '$scope', '$location', '$http', '$routeParams',
22
	function ($scope, $location, $http, $routeParams) {
23
		$scope.app = {};
24
	
25
		$scope.configurations = {};
26
		
27
		//alert($scope.app.activeConf);
28
		
29
		$scope.lookupConfigurations = function() {
30
			$http.get('dedup/lookupConfigurations.do').success(function(res) {
31
            	if(res) {
32
            		$scope.configurations = res;
33
             	} else {
34
            		$scope.showError('Unable to lookup Dedup confs');
35
            	}
36
			}).error(function(err) {
37
				$scope.showError('Unable to lookup Dedup confs: ' + err.message);
38
			});	
39
		}
40
		if (jQuery.isEmptyObject($scope.configurations)) {
41
			$scope.lookupConfigurations();
42
		}
43
		
44
		$scope.contains = function(array, s) {
45
		    for (var i = 0; i < array.length; i++) {
46
		        if (array[i] === s) {
47
		            return true;
48
		        }
49
		    }
50
		    return false;
51
		}
52
	}
53
]);
54

  
55
module.directive('bsHasError', function() {
56
	return {
57
		restrict: "A",
58
		link: function(scope, element, attrs, ctrl) {
59
			element.toggleClass('has-feedback', true);
60
			var input = element.find('input[ng-model], select[ng-model]');
61
			if (input) {
62
				scope.$watch(function() {
63
					if (input.hasClass('ng-invalid')) {
64
						return 0;
65
					} else if (input.hasClass('empty')) {
66
						return 1;
67
					} else {
68
						return 2;
69
					}
70
				}, function(code) {
71
					if (code < 0) return;
72
					
73
					element.toggleClass('has-error', (code == 0));
74
					element.toggleClass('has-warning', (code == 1));
75
					element.toggleClass('has-success', (code == 2));
76
					
77
					var feedback = element.find('.form-control-feedback');
78
					if (feedback) {
79
						feedback.toggleClass('glyphicon-remove', (code == 0));
80
						feedback.toggleClass('glyphicon-warning-sign', (code == 1));
81
						feedback.toggleClass('glyphicon-ok', (code == 2));
82
					}
83
				});
84
			}
85
		}
86
	};
87
});
88

  
89
module.directive('compileTemplate', function($compile, $parse){
90
    return {
91
        link: function(scope, element, attr) {
92
            var parsed = $parse(attr.ngBindHtml);
93

  
94
            function getStringValue() { return (parsed(scope) || '').toString(); }
95

  
96
            //Recompile if the template changes
97
            scope.$watch(getStringValue, function() {
98
            	$compile(element, null, -9999)(scope);  //The -9999 makes it skip directives so that we do not recompile ourselves
99
            });
100
        }
101
    }
102
});
103

  
104
module.directive('ngDedupRecordsTable', function() {
105
	return {
106
		restrict: 'E',
107
		scope: {
108
            'theads'  : '@',
109
            'fields'  : '@',
110
            'results' : '=',
111
            'group'	  : '=',
112
            'removal' : '=',
113
            
114
            'showMergedFn' : '=',
115
            'addToGroupFn' : '=',
116
            'removeFromGroupFn' : '=',
117
            'addToRemovalGroupFn' : '=',
118
            'removeFromRemovalGroupFn' : '='
119
		},
120
		templateUrl: '../resources/html/dedup/recordTable.html', 
121
		link: function(scope, element, attrs, ctrl) {
122
			scope.headers = scope.theads.split(",");
123
			scope.fnames = scope.fields.split(",");
124

  
125
			scope.containsList = function(idList, set) {
126
				var res = true;
127
				if (idList && set && set.length > 0) {
128
					var ids = idList.split(",");
129
					angular.forEach(ids, function(id) {
130
						if(jQuery.grep(set, function(val, i) {
131
							  return val == id;
132
						}).length == 0) {
133
					    	res = false;
134
					    	return;
135
						};
136
					});
137
				} else {
138
					return false;
139
				}
140
				return res;
141
			}
142
		}
143
	}
144
});
145

  
146
module.service('groupService', function () {
147
    var group = null;
148
    var dissimilar = null;
149
    return {
150
        getGroup:	function ()     { return group; },
151
        setGroup:	function (g)    { group = g; },
152
        
153
        getDissimilar:	function ()		{ return dissimilar; },
154
        setDissimilar:	function (d)	{ dissimilar = d; }            
155
    };
156
});
157

  
158

  
159

  
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/msro/workflows/hadoop/utils/Similarity.java
1
package eu.dnetlib.msro.workflows.hadoop.utils;
2

  
3
import com.google.gson.Gson;
4

  
5
import eu.dnetlib.data.proto.TypeProtos.Type;
6
import eu.dnetlib.miscutils.collections.Pair;
7

  
8
public class Similarity {
9

  
10
	private Pair<String, String> pair;
11
	private Type type;
12

  
13
	public Similarity(final Pair<String, String> pair, final Type type) {
14
		super();
15
		this.setPair(pair);
16
		this.setType(type);
17
	}
18

  
19
	public Pair<String, String> getPair() {
20
		return pair;
21
	}
22

  
23
	public void setPair(final Pair<String, String> pair) {
24
		this.pair = pair;
25
	}
26

  
27
	public Type getType() {
28
		return type;
29
	}
30

  
31
	public void setType(final Type type) {
32
		this.type = type;
33
	}
34

  
35
	@Override
36
	public String toString() {
37
		return new Gson().toJson(this, Similarity.class);
38
	}
39
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/msro/workflows/hadoop/hbase/CreateHBaseTableJobNode.java
1
package eu.dnetlib.msro.workflows.hadoop.hbase;
2

  
3
import java.util.Set;
4

  
5
import org.apache.commons.logging.Log;
6
import org.apache.commons.logging.LogFactory;
7

  
8
import com.googlecode.sarasvati.Arc;
9
import com.googlecode.sarasvati.NodeToken;
10

  
11
import eu.dnetlib.data.hadoop.rmi.HadoopService;
12

  
13
public class CreateHBaseTableJobNode extends AbstractHBaseAdminJobNode {
14

  
15
	private static final Log log = LogFactory.getLog(CreateHBaseTableJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
16

  
17
	@Override
18
	protected String execute(final NodeToken token) throws Exception {
19
		final Set<String> columns = getColumns(token);
20
		final String tableName = tableName(token);
21
		final String cluster = cluster(token);
22

  
23
		log.info("Ensuring table " + tableName + " on cluster: '" + cluster + "' - columns: " + columns);
24

  
25
		getServiceLocator().getService(HadoopService.class).createHbaseTable(cluster, tableName, columns);
26

  
27
		return Arc.DEFAULT_ARC;
28
	}
29

  
30
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/msro/workflows/hadoop/hbase/StoreHBaseRecordsJobNode.java
1
package eu.dnetlib.msro.workflows.hadoop.hbase;
2

  
3
import java.io.IOException;
4
import java.util.Map;
5

  
6
import org.apache.commons.io.IOUtils;
7
import org.apache.commons.logging.Log;
8
import org.apache.commons.logging.LogFactory;
9
import org.springframework.beans.factory.annotation.Required;
10

  
11
import com.googlecode.sarasvati.Engine;
12
import com.googlecode.sarasvati.NodeToken;
13
import com.googlecode.sarasvati.env.Env;
14

  
15
import eu.dnetlib.data.hadoop.rmi.HadoopBlackboardActions;
16
import eu.dnetlib.data.hadoop.rmi.HadoopService;
17
import eu.dnetlib.enabling.resultset.rmi.ResultSetException;
18
import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
19
import eu.dnetlib.miscutils.functional.xml.DnetXsltFunctions;
20
import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
21
import eu.dnetlib.msro.workflows.nodes.ProgressJobNode;
22
import eu.dnetlib.msro.workflows.nodes.blackboard.BlackboardWorkflowJobListener;
23
import eu.dnetlib.msro.workflows.resultset.ProcessCountingResultSetFactory;
24
import eu.dnetlib.msro.workflows.util.ProgressProvider;
25
import eu.dnetlib.msro.workflows.util.ResultsetProgressProvider;
26
import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
27

  
28
public class StoreHBaseRecordsJobNode extends BlackboardJobNode implements ProgressJobNode {
29

  
30
	private static final Log log = LogFactory.getLog(StoreHBaseRecordsJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
31

  
32
	private String inputEprParam;
33
	private String hbaseTableProperty;
34
	private String cluster;
35
	private String xslt;
36

  
37
	private boolean simulation = false;
38

  
39
	private ProgressProvider progressProvider;
40

  
41
	private ProcessCountingResultSetFactory processCountingResultSetFactory;
42

  
43
	@Override
44
	protected String obtainServiceId(final NodeToken token) {
45
		return getServiceLocator().getServiceId(HadoopService.class);
46
	}
47

  
48
	@Override
49
	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
50
		log.info("Invoking blackboard method");
51

  
52
		job.setAction(HadoopBlackboardActions.IMPORT_EPR_HBASE.toString());
53
		job.getParameters().put("input_epr", DnetXsltFunctions.encodeBase64(prepareEpr(token)));
54
		job.getParameters().put("xslt", DnetXsltFunctions.encodeBase64(prepareXslt()));
55
		job.getParameters().put("table", getPropertyFetcher().getProperty(getHbaseTableProperty()));
56
		job.getParameters().put("cluster", cluster);
57
		job.getParameters().put("simulation", String.valueOf(isSimulation()));
58
	}
59

  
60
	@Override
61
	protected BlackboardWorkflowJobListener generateBlackboardListener(final Engine engine, final NodeToken token) {
62
		return new BlackboardWorkflowJobListener(engine, token) {
63

  
64
			@Override
65
			protected void populateEnv(final Env env, final Map<String, String> responseParams) {
66
				final String count = responseParams.get("count");
67
				log.info(String.format("Imported %s objects to HBase table %s, cluster %s", count, getPropertyFetcher().getProperty(getHbaseTableProperty()),
68
						getCluster()));
69
				env.setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + getName() + ":count", count);
70
			}
71
		};
72
	}
73

  
74
	private String prepareEpr(final NodeToken token) throws ResultSetException {
75
		final String epr = token.getEnv().getAttribute(inputEprParam);
76
		final ResultsetProgressProvider resultsetProgressProvider = processCountingResultSetFactory.createProgressProvider(token.getProcess(), epr);
77

  
78
		setProgressProvider(resultsetProgressProvider);
79

  
80
		return resultsetProgressProvider.getEpr().toString();
81
	}
82

  
83
	private String prepareXslt() throws IOException {
84
		return (xslt == null) || xslt.isEmpty() ? "" : IOUtils.toString(getClass().getResourceAsStream(xslt));
85
	}
86

  
87
	public String getInputEprParam() {
88
		return inputEprParam;
89
	}
90

  
91
	public void setInputEprParam(final String inputEprParam) {
92
		this.inputEprParam = inputEprParam;
93
	}
94

  
95
	public String getHbaseTableProperty() {
96
		return hbaseTableProperty;
97
	}
98

  
99
	public void setHbaseTableProperty(final String hbaseTableProperty) {
100
		this.hbaseTableProperty = hbaseTableProperty;
101
	}
102

  
103
	@Required
104
	public void setProcessCountingResultSetFactory(final ProcessCountingResultSetFactory processCountingResultSetFactory) {
105
		this.processCountingResultSetFactory = processCountingResultSetFactory;
106
	}
107

  
108
	@Override
109
	public ProgressProvider getProgressProvider() {
110
		return progressProvider;
111
	}
112

  
113
	public void setProgressProvider(final ProgressProvider progressProvider) {
114
		this.progressProvider = progressProvider;
115
	}
116

  
117
	public ProcessCountingResultSetFactory getProcessCountingResultSetFactory() {
118
		return processCountingResultSetFactory;
119
	}
120

  
121
	public String getXslt() {
122
		return xslt;
123
	}
124

  
125
	public void setXslt(final String xslt) {
126
		this.xslt = xslt;
127
	}
128

  
129
	public String getCluster() {
130
		return cluster;
131
	}
132

  
133
	public void setCluster(final String cluster) {
134
		this.cluster = cluster;
135
	}
136

  
137
	public boolean isSimulation() {
138
		return simulation;
139
	}
140

  
141
	public void setSimulation(final boolean simulation) {
142
		this.simulation = simulation;
143
	}
144

  
145
}
modules/dnet-deduplication/tags/dnet-deduplication-1.1.10/src/main/java/eu/dnetlib/msro/workflows/hadoop/utils/HBaseTableUtils.java
1
package eu.dnetlib.msro.workflows.hadoop.utils;
2

  
3
import java.util.Collection;
4
import java.util.Set;
5

  
6
import com.google.common.base.Function;
7
import com.google.common.base.Predicate;
8
import com.google.common.collect.Iterables;
9
import com.google.common.collect.Lists;
10
import com.google.common.collect.Sets;
11

  
12
import eu.dnetlib.data.proto.DatasourceOrganizationProtos.DatasourceOrganization.Provision;
13
import eu.dnetlib.data.proto.DedupProtos.Dedup;
14
import eu.dnetlib.data.proto.DedupSimilarityProtos.DedupSimilarity;
15
import eu.dnetlib.data.proto.PersonPersonProtos.PersonPerson.CoAuthorship;
16
import eu.dnetlib.data.proto.PersonResultProtos.PersonResult.Authorship;
17
import eu.dnetlib.data.proto.ProjectOrganizationProtos.ProjectOrganization.Participation;
18
import eu.dnetlib.data.proto.ProjectPersonProtos.ProjectPerson.ContactPerson;
19
import eu.dnetlib.data.proto.RelTypeProtos.RelType;
20
import eu.dnetlib.data.proto.RelTypeProtos.SubRelType;
21
import eu.dnetlib.data.proto.ResultProjectProtos.ResultProject.Outcome;
22
import eu.dnetlib.data.proto.ResultResultProtos.ResultResult.PublicationDataset;
23
import eu.dnetlib.data.proto.ResultResultProtos.ResultResult.Similarity;
24
import eu.dnetlib.data.proto.TypeProtos.Type;
25

  
26
/**
27
 * Common static utility methods to manage the hbase tables
28
 *
29
 * @author claudio
30
 *
31
 */
32
public class HBaseTableUtils {
33

  
34
	private static final String _ = "_";
35
	private static Function<Type, String> typeName = new Function<Type, String>() {
36

  
37
		@Override
38
		public String apply(final Type type) {
39
			return type.toString();
40
		}
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff