Révision 2560
| tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java (revision 2560) | ||
|---|---|---|
| 15 | 15 |
import java.util.Locale; |
| 16 | 16 |
import java.util.Properties; |
| 17 | 17 |
import java.util.concurrent.Semaphore; |
| 18 |
import java.util.logging.Level; |
|
| 19 | 18 |
import java.util.regex.Pattern; |
| 20 | 19 |
|
| 21 | 20 |
import org.apache.commons.lang.StringUtils; |
| ... | ... | |
| 1586 | 1585 |
* @param clazz |
| 1587 | 1586 |
* @return |
| 1588 | 1587 |
*/ |
| 1589 |
public List<? extends TXMResult> getChildren(Class<? extends TXMResult> clazz) {
|
|
| 1588 |
public <T extends TXMResult> List<T> getChildren(Class<T> clazz) {
|
|
| 1590 | 1589 |
return TXMResult.getNodes(this.children, clazz, false); |
| 1591 | 1590 |
} |
| 1592 | 1591 |
|
| ... | ... | |
| 1596 | 1595 |
* @param clazz |
| 1597 | 1596 |
* @return |
| 1598 | 1597 |
*/ |
| 1599 |
public List<TXMResult> getChildren(Class<? extends TXMResult> clazz, boolean onlyVisible) {
|
|
| 1598 |
public <T extends TXMResult> List<T> getChildren(Class<T> clazz, boolean onlyVisible) {
|
|
| 1600 | 1599 |
return TXMResult.getNodes(this.children, clazz, onlyVisible); |
| 1601 | 1600 |
} |
| 1602 | 1601 |
|
| ... | ... | |
| 1606 | 1605 |
* @param clazz |
| 1607 | 1606 |
* @return the first child if exists otherwise null |
| 1608 | 1607 |
*/ |
| 1609 |
public TXMResult getFirstChild(Class<? extends TXMResult> clazz) {
|
|
| 1610 |
List<TXMResult> children = this.getChildren(clazz, false);
|
|
| 1608 |
public <T extends TXMResult> TXMResult getFirstChild(Class<T> clazz) {
|
|
| 1609 |
List<T> children = this.getChildren(clazz, false); |
|
| 1611 | 1610 |
try {
|
| 1612 | 1611 |
return children.get(0); |
| 1613 | 1612 |
} |
| ... | ... | |
| 1631 | 1630 |
* @param clazz |
| 1632 | 1631 |
* @return |
| 1633 | 1632 |
*/ |
| 1634 |
public void deleteChildren(Class<? extends TXMResult> clazz) {
|
|
| 1635 |
List<TXMResult> children = (List<TXMResult>) this.getChildren(clazz);
|
|
| 1633 |
public <T extends TXMResult> void deleteChildren(Class<T> clazz) {
|
|
| 1634 |
List<T> children = this.getChildren(clazz);
|
|
| 1636 | 1635 |
for (int i = 0; i < children.size(); i++) {
|
| 1637 | 1636 |
children.get(i).delete(); |
| 1638 | 1637 |
} |
| ... | ... | |
| 1647 | 1646 |
* @param clazz |
| 1648 | 1647 |
* @return |
| 1649 | 1648 |
*/ |
| 1650 |
protected static List<TXMResult> getDeepChildren(TXMResult parent, Class<? extends TXMResult> clazz) {
|
|
| 1649 |
@SuppressWarnings("unchecked")
|
|
| 1650 |
protected static <T extends TXMResult> List<T> getDeepChildren(TXMResult parent, Class<T> clazz) {
|
|
| 1651 | 1651 |
|
| 1652 |
List<TXMResult> results = new ArrayList<>();
|
|
| 1653 |
List<? extends TXMResult> children = parent.getChildren(clazz);
|
|
| 1652 |
List<T> results = new ArrayList<>(); |
|
| 1653 |
List<TXMResult> children = parent.getChildren();
|
|
| 1654 | 1654 |
|
| 1655 | 1655 |
for (int i = 0; i < children.size(); i++) {
|
| 1656 | 1656 |
TXMResult child = children.get(i); |
| 1657 |
results.add(child); |
|
| 1657 |
if (clazz == null || child.getClass().asSubclass(clazz) != null) {
|
|
| 1658 |
results.add((T) child); |
|
| 1659 |
} |
|
| 1658 | 1660 |
results.addAll(child.getDeepChildren(clazz)); |
| 1659 | 1661 |
} |
| 1660 | 1662 |
return results; |
| ... | ... | |
| 1665 | 1667 |
* |
| 1666 | 1668 |
* @return |
| 1667 | 1669 |
*/ |
| 1668 |
public List<TXMResult> getDeepChildren(Class<? extends TXMResult> clazz) {
|
|
| 1670 |
public <T extends TXMResult> List<T> getDeepChildren(Class<T> clazz) {
|
|
| 1669 | 1671 |
return TXMResult.getDeepChildren(this, clazz); |
| 1670 | 1672 |
} |
| 1671 | 1673 |
|
| ... | ... | |
| 1742 | 1744 |
* @param onlyVisible |
| 1743 | 1745 |
* @return a new filtered nodes list |
| 1744 | 1746 |
*/ |
| 1745 |
protected static List<TXMResult> getNodes(List<TXMResult> srcNodes, Class<? extends TXMResult> clazz, boolean onlyVisible) {
|
|
| 1746 |
List<TXMResult> nodes = new ArrayList<>(); |
|
| 1747 |
@SuppressWarnings("unchecked")
|
|
| 1748 |
protected static <T extends TXMResult> List<T> getNodes(List<TXMResult> srcNodes, Class<T> clazz, boolean onlyVisible) {
|
|
| 1749 |
List<T> nodes = new ArrayList<>(); |
|
| 1747 | 1750 |
for (TXMResult child : srcNodes) {
|
| 1748 | 1751 |
try {
|
| 1749 | 1752 |
if ((clazz == null || |
| 1750 | 1753 |
child.getClass().asSubclass(clazz) != null) |
| 1751 | 1754 |
&& (onlyVisible == false || child.isVisible())) {
|
| 1752 |
nodes.add(child); |
|
| 1755 |
nodes.add((T) child);
|
|
| 1753 | 1756 |
} |
| 1754 | 1757 |
|
| 1755 | 1758 |
// add children of a non visible result |
| 1756 | 1759 |
else if (!child.isVisible() && child.hasChildren()) {
|
| 1757 |
List<TXMResult> subChidlren = child.getChildren(clazz, onlyVisible);
|
|
| 1760 |
List<T> subChidlren = child.getChildren(clazz, onlyVisible); |
|
| 1758 | 1761 |
nodes.addAll(subChidlren); |
| 1759 | 1762 |
} |
| 1760 | 1763 |
} |
| ... | ... | |
| 1800 | 1803 |
* @param clazz the class of parent to look for |
| 1801 | 1804 |
* @return the first parent of the specified class if exist otherwise null |
| 1802 | 1805 |
*/ |
| 1803 |
public TXMResult getFirstParent(Class<? extends TXMResult> clazz) {
|
|
| 1804 |
TXMResult node = null; |
|
| 1806 |
@SuppressWarnings("unchecked")
|
|
| 1807 |
public <T extends TXMResult> T getFirstParent(Class<T> clazz) {
|
|
| 1808 |
T node = null; |
|
| 1805 | 1809 |
TXMResult parent = this.parent; |
| 1806 | 1810 |
do {
|
| 1807 | 1811 |
if (parent != null) {
|
| 1808 |
if (parent.getClass().equals(clazz)) {
|
|
| 1809 |
node = parent; |
|
| 1812 |
if (clazz == null || parent.getClass().equals(clazz)) {
|
|
| 1813 |
node = (T) parent;
|
|
| 1810 | 1814 |
} |
| 1811 | 1815 |
|
| 1812 | 1816 |
parent = parent.getParent(); |
| ... | ... | |
| 1849 | 1853 |
* @param clazz the class of siblings to look for |
| 1850 | 1854 |
* @return |
| 1851 | 1855 |
*/ |
| 1852 |
public List<TXMResult> getSiblings(Class<? extends TXMResult> clazz) {
|
|
| 1853 |
List<TXMResult> sibling = new ArrayList<>();
|
|
| 1856 |
public <T extends TXMResult> List<T> getSiblings(Class<T> clazz) {
|
|
| 1857 |
List<T> sibling = new ArrayList<>(); |
|
| 1854 | 1858 |
if (this.parent != null) {
|
| 1855 | 1859 |
sibling.addAll(TXMResult.getNodes(this.parent.getChildren(), clazz, true)); |
| 1856 | 1860 |
sibling.remove(this); |
| ... | ... | |
| 2478 | 2482 |
if (this.parent != null) {
|
| 2479 | 2483 |
|
| 2480 | 2484 |
Log.finest("TXMResult.compute(): " + this.getClass().getSimpleName() + ": cascade computing of " + this.children.size() + " child(ren).");
|
| 2485 |
// SubMonitor subMonitor = SubMonitor.convert(monitor, this.children.size()); |
|
| 2481 | 2486 |
|
| 2482 | 2487 |
for (int i = 0; i < this.children.size(); i++) {
|
| 2483 | 2488 |
|
| ... | ... | |
| 2487 | 2492 |
// or if this result always needs its children synchronized/computed to be consistent (eg. Partition and children parts) |
| 2488 | 2493 |
if ((deepComputing && child.hasBeenComputedOnce()) || child.mustBeSynchronizedWithParent()) {
|
| 2489 | 2494 |
child.compute(monitor, deepComputing); |
| 2495 |
// subMonitor.worked(1); |
|
| 2490 | 2496 |
} |
| 2491 | 2497 |
|
| 2492 | 2498 |
if (monitor != null && this.children.size() > 1) {
|
| ... | ... | |
| 2495 | 2501 |
} |
| 2496 | 2502 |
} |
| 2497 | 2503 |
} |
| 2498 |
|
|
| 2499 | 2504 |
} |
| 2500 | 2505 |
catch (Exception e) {
|
| 2501 | 2506 |
e.printStackTrace(); |
| ... | ... | |
| 2856 | 2861 |
* @return the project of the result |
| 2857 | 2862 |
*/ |
| 2858 | 2863 |
public final Project getProject() {
|
| 2859 |
return (Project) this.getFirstParent(Project.class);
|
|
| 2864 |
return this.getFirstParent(Project.class); |
|
| 2860 | 2865 |
} |
| 2861 | 2866 |
|
| 2862 | 2867 |
/** |
Formats disponibles : Unified diff