| @@ 1713-1809 (lines=97) @@ | ||
| 1710 | * |
|
| 1711 | * @param unification |
|
| 1712 | */ |
|
| 1713 | private void doRetractUnification(GoalUnification unification) { |
|
| 1714 | ||
| 1715 | // original goal |
|
| 1716 | Decision goal = unification.getGoalDecision(); |
|
| 1717 | ||
| 1718 | // get goal component |
|
| 1719 | DomainComponent goalComp = goal.getComponent(); |
|
| 1720 | // restore original planning goal SILENT -> PENDING |
|
| 1721 | goalComp.restore(goal); |
|
| 1722 | ||
| 1723 | // deactivate activated relations |
|
| 1724 | for (Relation rel : unification.getActivatedRelations()) { |
|
| 1725 | // get reference component |
|
| 1726 | DomainComponent refComp = rel.getReference().getComponent(); |
|
| 1727 | refComp.deactivate(rel); |
|
| 1728 | } |
|
| 1729 | ||
| 1730 | // translated back relations |
|
| 1731 | for (Relation rel : unification.getTranslatedReferenceGoalRelations()){ |
|
| 1732 | // check category |
|
| 1733 | if (rel.getCategory().equals(ConstraintCategory.PARAMETER_CONSTRAINT)) { |
|
| 1734 | ||
| 1735 | // get parameter relation |
|
| 1736 | ParameterRelation pRel = (ParameterRelation) rel; |
|
| 1737 | ||
| 1738 | // get relation reference parameter label |
|
| 1739 | String refParamLabel = pRel.getReferenceParameterLabel(); |
|
| 1740 | // get label index |
|
| 1741 | int pIndex = pRel.getReference().getParameterIndexByLabel(refParamLabel); |
|
| 1742 | // get goal decision parameter label |
|
| 1743 | String label = goal.getParameterLabelByIndex(pIndex); |
|
| 1744 | ||
| 1745 | // update relation |
|
| 1746 | pRel.setReference(goal); |
|
| 1747 | pRel.setReferenceParameterLabel(label); |
|
| 1748 | } |
|
| 1749 | ||
| 1750 | if (rel.getCategory().equals(ConstraintCategory.TEMPORAL_CONSTRAINT)) { |
|
| 1751 | // update relation |
|
| 1752 | rel.setReference(goal); |
|
| 1753 | } |
|
| 1754 | } |
|
| 1755 | ||
| 1756 | // translated back parameter relations |
|
| 1757 | for (Relation rel : unification.getTranslatedTargetGoalRelations()) { |
|
| 1758 | ||
| 1759 | // check relation category |
|
| 1760 | if (rel.getCategory().equals(ConstraintCategory.PARAMETER_CONSTRAINT)) { |
|
| 1761 | // check relation |
|
| 1762 | switch (rel.getType()) { |
|
| 1763 | ||
| 1764 | case EQUAL_PARAMETER : { |
|
| 1765 | ||
| 1766 | // get equal relation |
|
| 1767 | EqualParameterRelation eqRel = (EqualParameterRelation) rel; |
|
| 1768 | // get relation reference parameter label |
|
| 1769 | String tarParamLabel = eqRel.getTargetParameterLabel(); |
|
| 1770 | // get label index |
|
| 1771 | int pIndex = eqRel.getTarget().getParameterIndexByLabel(tarParamLabel); |
|
| 1772 | // get goal decision parameter label |
|
| 1773 | String label = goal.getParameterLabelByIndex(pIndex); |
|
| 1774 | ||
| 1775 | // update relation |
|
| 1776 | eqRel.setTarget(goal); |
|
| 1777 | eqRel.setTargetParameterLabel(label); |
|
| 1778 | } |
|
| 1779 | break; |
|
| 1780 | ||
| 1781 | case NOT_EQUAL_PARAMETER : { |
|
| 1782 | ||
| 1783 | // get equal relation |
|
| 1784 | NotEqualParameterRelation neqRel = (NotEqualParameterRelation) rel; |
|
| 1785 | // get relation reference parameter label |
|
| 1786 | String tarParamLabel = neqRel.getTargetParameterLabel(); |
|
| 1787 | // get label index |
|
| 1788 | int pIndex = neqRel.getTarget().getParameterIndexByLabel(tarParamLabel); |
|
| 1789 | // get goal decision parameter label |
|
| 1790 | String label = goal.getParameterLabelByIndex(pIndex); |
|
| 1791 | ||
| 1792 | // update relation |
|
| 1793 | neqRel.setTarget(goal); |
|
| 1794 | neqRel.setTargetParameterLabel(label); |
|
| 1795 | } |
|
| 1796 | break; |
|
| 1797 | ||
| 1798 | default: |
|
| 1799 | // unknown parameter relation |
|
| 1800 | throw new RuntimeException("Unknown Parameter relation type : " + rel.getType() + "\n"); |
|
| 1801 | ||
| 1802 | } |
|
| 1803 | } |
|
| 1804 | ||
| 1805 | // check temporal relation |
|
| 1806 | if (rel.getCategory().equals(ConstraintCategory.TEMPORAL_CONSTRAINT)) { |
|
| 1807 | ||
| 1808 | // update relation |
|
| 1809 | rel.setTarget(goal); |
|
| 1810 | } |
|
| 1811 | } |
|
| 1812 | } |
|
| @@ 1502-1598 (lines=97) @@ | ||
| 1499 | * |
|
| 1500 | * @param unification |
|
| 1501 | */ |
|
| 1502 | private void doRetractUnification(GoalUnification unification) { |
|
| 1503 | ||
| 1504 | // original goal |
|
| 1505 | Decision goal = unification.getGoalDecision(); |
|
| 1506 | ||
| 1507 | // get goal component |
|
| 1508 | DomainComponent goalComp = goal.getComponent(); |
|
| 1509 | // restore original planning goal SILENT -> PENDING |
|
| 1510 | goalComp.restore(goal); |
|
| 1511 | ||
| 1512 | // deactivate activated relations |
|
| 1513 | for (Relation rel : unification.getActivatedRelations()) { |
|
| 1514 | // get reference component |
|
| 1515 | DomainComponent refComp = rel.getReference().getComponent(); |
|
| 1516 | refComp.deactivate(rel); |
|
| 1517 | } |
|
| 1518 | ||
| 1519 | // translated back relations |
|
| 1520 | for (Relation rel : unification.getTranslatedReferenceGoalRelations()){ |
|
| 1521 | // check category |
|
| 1522 | if (rel.getCategory().equals(ConstraintCategory.PARAMETER_CONSTRAINT)) { |
|
| 1523 | ||
| 1524 | // get parameter relation |
|
| 1525 | ParameterRelation pRel = (ParameterRelation) rel; |
|
| 1526 | ||
| 1527 | // get relation reference parameter label |
|
| 1528 | String refParamLabel = pRel.getReferenceParameterLabel(); |
|
| 1529 | // get label index |
|
| 1530 | int pIndex = pRel.getReference().getParameterIndexByLabel(refParamLabel); |
|
| 1531 | // get goal decision parameter label |
|
| 1532 | String label = goal.getParameterLabelByIndex(pIndex); |
|
| 1533 | ||
| 1534 | // update relation |
|
| 1535 | pRel.setReference(goal); |
|
| 1536 | pRel.setReferenceParameterLabel(label); |
|
| 1537 | } |
|
| 1538 | ||
| 1539 | if (rel.getCategory().equals(ConstraintCategory.TEMPORAL_CONSTRAINT)) { |
|
| 1540 | // update relation |
|
| 1541 | rel.setReference(goal); |
|
| 1542 | } |
|
| 1543 | } |
|
| 1544 | ||
| 1545 | // translated back parameter relations |
|
| 1546 | for (Relation rel : unification.getTranslatedTargetGoalRelations()) { |
|
| 1547 | ||
| 1548 | // check relation category |
|
| 1549 | if (rel.getCategory().equals(ConstraintCategory.PARAMETER_CONSTRAINT)) { |
|
| 1550 | // check relation |
|
| 1551 | switch (rel.getType()) { |
|
| 1552 | ||
| 1553 | case EQUAL_PARAMETER : { |
|
| 1554 | ||
| 1555 | // get equal relation |
|
| 1556 | EqualParameterRelation eqRel = (EqualParameterRelation) rel; |
|
| 1557 | // get relation reference parameter label |
|
| 1558 | String tarParamLabel = eqRel.getTargetParameterLabel(); |
|
| 1559 | // get label index |
|
| 1560 | int pIndex = eqRel.getTarget().getParameterIndexByLabel(tarParamLabel); |
|
| 1561 | // get goal decision parameter label |
|
| 1562 | String label = goal.getParameterLabelByIndex(pIndex); |
|
| 1563 | ||
| 1564 | // update relation |
|
| 1565 | eqRel.setTarget(goal); |
|
| 1566 | eqRel.setTargetParameterLabel(label); |
|
| 1567 | } |
|
| 1568 | break; |
|
| 1569 | ||
| 1570 | case NOT_EQUAL_PARAMETER : { |
|
| 1571 | ||
| 1572 | // get equal relation |
|
| 1573 | NotEqualParameterRelation neqRel = (NotEqualParameterRelation) rel; |
|
| 1574 | // get relation reference parameter label |
|
| 1575 | String tarParamLabel = neqRel.getTargetParameterLabel(); |
|
| 1576 | // get label index |
|
| 1577 | int pIndex = neqRel.getTarget().getParameterIndexByLabel(tarParamLabel); |
|
| 1578 | // get goal decision parameter label |
|
| 1579 | String label = goal.getParameterLabelByIndex(pIndex); |
|
| 1580 | ||
| 1581 | // update relation |
|
| 1582 | neqRel.setTarget(goal); |
|
| 1583 | neqRel.setTargetParameterLabel(label); |
|
| 1584 | } |
|
| 1585 | break; |
|
| 1586 | ||
| 1587 | default: |
|
| 1588 | // unknown parameter relation |
|
| 1589 | throw new RuntimeException("Unknown Parameter relation type : " + rel.getType() + "\n"); |
|
| 1590 | ||
| 1591 | } |
|
| 1592 | } |
|
| 1593 | ||
| 1594 | // check temporal relation |
|
| 1595 | if (rel.getCategory().equals(ConstraintCategory.TEMPORAL_CONSTRAINT)) { |
|
| 1596 | ||
| 1597 | // update relation |
|
| 1598 | rel.setTarget(goal); |
|
| 1599 | } |
|
| 1600 | } |
|
| 1601 | } |
|