Code Duplication    Length = 35-35 lines in 2 locations

src/main/java/it/cnr/istc/pst/platinum/ai/framework/microkernel/resolver/plan/TimelineAwarePlanRefinementResolver.java 1 location

@@ 488-522 (lines=35) @@
485
	 * 
486
	 * @param goal
487
	 */
488
	private void doComputeUnificationSolutions(Goal goal) {
489
		
490
		// get goal component
491
		DomainComponent gComp = goal.getComponent();
492
		// list of goal unifications found
493
		List<GoalUnification> unifications = new ArrayList<>();
494
		
495
		// search active decisions that can be unified with the goal
496
		for (Decision unif : gComp.getActiveDecisions()) {
497
			
498
			// check predicate and temporal unification
499
			if (this.isPredicateUnificationFeasible(goal.getDecision(), unif) && 
500
					this.isTemporalUnificationFeasible(goal.getDecision(), unif)) {
501
				
502
				// possible unification found
503
				GoalUnification unification = new GoalUnification(goal, unif, this.unificationCost);
504
				// add unifications
505
				unifications.add(unification);
506
				info("Feasible unification found:\n"
507
						+ "- planning goal: " + goal + "\n"
508
						+ "- unification decision: " + unification + "\n");
509
			}
510
			else {
511
				
512
				// unification not feasible
513
				debug("No feasible unification:\n"
514
						+ "- planning goal: " + goal + "\n"
515
						+ "- decision : \"" + unif + "\"\n");
516
			}
517
		}
518
		
519
		// add unifications as goal solutions
520
		Collections.shuffle(unifications);
521
		for (GoalUnification unif : unifications) {
522
			goal.addSolution(unif);
523
		}
524
	}
525

src/main/java/it/cnr/istc/pst/platinum/ai/framework/microkernel/resolver/plan/PlanRefinementResolver.java 1 location

@@ 483-517 (lines=35) @@
480
	 * 
481
	 * @param goal
482
	 */
483
	private void doComputeUnificationSolutions(Goal goal) {
484
		
485
		// get goal component
486
		DomainComponent gComp = goal.getComponent();
487
		// list of goal unifications found
488
		List<GoalUnification> unifications = new ArrayList<>();
489
		
490
		// search active decisions that can be unified with the goal
491
		for (Decision unif : gComp.getActiveDecisions()) {
492
			
493
			// check predicate and temporal unification
494
			if (this.isPredicateUnificationFeasible(goal.getDecision(), unif) && 
495
					this.isTemporalUnificationFeasible(goal.getDecision(), unif)) {
496
				
497
				// possible unification found
498
				GoalUnification unification = new GoalUnification(goal, unif, this.unificationCost);
499
				// add unifications
500
				unifications.add(unification);
501
				info("Feasible unification found:\n"
502
						+ "- planning goal: " + goal + "\n"
503
						+ "- unification decision: " + unification + "\n");
504
			}
505
			else {
506
				
507
				// unification not feasible
508
				debug("No feasible unification:\n"
509
						+ "- planning goal: " + goal + "\n"
510
						+ "- decision : \"" + unif + "\"\n");
511
			}
512
		}
513
		
514
		// add unifications as goal solutions
515
		Collections.shuffle(unifications);
516
		for (GoalUnification unif : unifications) {
517
			goal.addSolution(unif);
518
		}
519
	}
520