Code Duplication    Length = 32-37 lines in 4 locations

src/main/java/it/cnr/istc/pst/platinum/ai/framework/domain/component/DomainComponent.java 4 locations

@@ 1055-1091 (lines=37) @@
1052
	 * @param dec
1053
	 * @return
1054
	 */
1055
	public synchronized Set<Relation> getToActivateRelations(Decision dec) 
1056
	{
1057
		// check decision component
1058
		if (!dec.getComponent().equals(this)) {
1059
			throw new RuntimeException("Unknown decision to component:\n- component: " + this.name + "\n- decision: " + dec + "\n");
1060
		}
1061
		
1062
		// list of relations
1063
		Set<Relation> set = new HashSet<>();
1064
		// check pending local relations
1065
		for (Relation rel : this.localRelations) {
1066
			// check decisions and relation status
1067
			if ((rel.getReference().equals(dec) || 
1068
					rel.getTarget().equals(dec)) && 
1069
					rel.canBeActivated()) 
1070
			{
1071
				// add pending local relation
1072
				set.add(rel);
1073
			}
1074
		}
1075
		
1076
		// check pending global relations
1077
		synchronized (globalRelations) {
1078
			for (Relation rel : globalRelations) {
1079
				
1080
				// check reference and target decisions
1081
				if ((rel.getReference().equals(dec) || 
1082
						rel.getTarget().equals(dec)) && 
1083
						rel.canBeActivated()) 
1084
				{
1085
					// add pending global relation
1086
					set.add(rel);
1087
				}
1088
			}
1089
		}
1090
		
1091
		// get list 
1092
		return set;
1093
	}
1094
	
@@ 901-937 (lines=37) @@
898
	 * @param dec
899
	 * @return
900
	 */
901
	public synchronized Set<Relation> getActiveRelations(Decision dec)
902
	{
903
		// check if local relation
904
		if (!dec.getComponent().equals(this)) {
905
			throw new RuntimeException("Unknown decision to component:- component: " + this.name + "\n- decision: " + dec + "\n");
906
		}
907
		
908
		// list of active relations
909
		Set<Relation> set = new HashSet<>();
910
		// check local relations
911
		for (Relation rel : this.localRelations) {
912
			// check related decisions and relation status
913
			if ((rel.getReference().equals(dec) || 
914
					rel.getTarget().equals(dec)) 
915
					&& rel.isActive()) 
916
			{
917
				// add relation
918
				set.add(rel);
919
			}
920
		}
921
		
922
		// check global relations
923
		synchronized (globalRelations) {
924
			for (Relation rel : globalRelations) {
925
				// check related decision and relation status
926
				if ((rel.getReference().equals(dec) || 
927
						rel.getTarget().equals(dec)) && 
928
						rel.isActive()) 
929
				{
930
					// add relation
931
					set.add(rel);
932
				}
933
			}
934
		}
935
		
936
		// get the list
937
		return set;
938
	}
939
	
940
	/**
@@ 1100-1133 (lines=34) @@
1097
	 * @param dec
1098
	 * @return
1099
	 */
1100
	public synchronized Set<Relation> getPendingRelations(Decision dec) 
1101
	{
1102
		// check if local decision
1103
		if (!dec.getComponent().equals(this)) {
1104
			throw new RuntimeException("Unknown decision to component:- component: " + this.name + "\n- decision: " + dec + "\n");
1105
		}
1106
		
1107
		// list of relations
1108
		Set<Relation> set = new HashSet<>();
1109
		// check local relations
1110
		for (Relation rel : this.localRelations) 
1111
		{
1112
			// check decisions and relation status
1113
			if ((rel.getReference().equals(dec) || 
1114
					rel.getTarget().equals(dec)) && 
1115
					rel.isPending()) {
1116
				// add pending relation
1117
				set.add(rel);
1118
			}
1119
		}
1120
		
1121
		// check global relations
1122
		synchronized (globalRelations) {
1123
			for (Relation rel : globalRelations) {
1124
				// check decisions and relation status
1125
				if ((rel.getReference().equals(dec) || rel.getTarget().equals(dec)) && rel.isPending()) {
1126
					// add pending relation
1127
					set.add(rel);
1128
				}
1129
			}
1130
		}
1131
		
1132
		// get list 
1133
		return set;
1134
	}
1135
	
1136
	/**
@@ 1142-1173 (lines=32) @@
1139
	 * @param dec
1140
	 * @return
1141
	 */
1142
	public synchronized Set<Relation> getRelations(Decision dec)
1143
	{
1144
		// check if local decision
1145
		if (!dec.getComponent().equals(this)) {
1146
			throw new RuntimeException("Unknown decision to component:- component: " + this.name + "\n- decision: " + dec + "\n");
1147
		}
1148
		
1149
		// list local of relations
1150
		Set<Relation> set = new HashSet<>();
1151
		for (Relation rel : this.localRelations) {
1152
			// check decisions and relation status
1153
			if (dec.equals(rel.getReference()) || 
1154
					dec.equals(rel.getTarget())) {
1155
				// add relation
1156
				set.add(rel);
1157
			}
1158
		}
1159
		
1160
		// check global relations
1161
		synchronized (globalRelations) {
1162
			// get also global relation
1163
			for (Relation rel : globalRelations) {
1164
				if (dec.equals(rel.getReference()) || 
1165
						dec.equals(rel.getTarget())) {
1166
					// add relation
1167
					set.add(rel);
1168
				}
1169
	 		}
1170
		}
1171
		
1172
		// get list 
1173
		return set;		
1174
	}
1175
	
1176
	/**