//Remove overlapping
if (dynamicGraph && parameters.isRemoveIntervalsOverlapping()) {
for (NodeDraftImpl node : nodeMap.values()) {
AttributeValue[] values = node.getAttributeRow().getValues();
for (int i = 0; i < values.length; i++) {
AttributeValue val = values[i];
if (val.getValue() != null && val.getValue() instanceof DynamicType) { //is Dynamic type
DynamicType type = (DynamicType) val.getValue();
type = DynamicUtilities.removeOverlapping(type);
node.getAttributeRow().setValue(val.getColumn(), type);
}
}
}
for (EdgeDraftImpl edge : edgeMap.values()) {
AttributeValue[] values = edge.getAttributeRow().getValues();
for (int i = 0; i < values.length; i++) {
AttributeValue val = values[i];
if (val.getValue() != null && val.getValue() instanceof DynamicType) { //is Dynamic type
DynamicType type = (DynamicType) val.getValue();
type = DynamicUtilities.removeOverlapping(type);
edge.getAttributeRow().setValue(val.getColumn(), type);
}
}
}
}
//Dynamic attributes bounds
if (dynamicGraph && (timeIntervalMin != null || timeIntervalMax != null)) {
for (NodeDraftImpl node : nodeMap.values()) {
boolean issue = false;
if (timeIntervalMin != null || timeIntervalMax != null) {
if (timeIntervalMin != null && node.getTimeInterval() != null && node.getTimeInterval().getLow() < timeIntervalMin) {
node.setTimeInterval((TimeInterval) DynamicUtilities.fitToInterval(node.getTimeInterval(), timeIntervalMin, node.getTimeInterval().getHigh()));
issue = true;
}
if (timeIntervalMax != null && node.getTimeInterval() != null && node.getTimeInterval().getHigh() > timeIntervalMax) {
node.setTimeInterval((TimeInterval) DynamicUtilities.fitToInterval(node.getTimeInterval(), node.getTimeInterval().getLow(), timeIntervalMax));
issue = true;
}
if (node.getTimeInterval() == null) {
node.setTimeInterval(new TimeInterval(timeIntervalMin, timeIntervalMax));
}
}
AttributeValue[] values = node.getAttributeRow().getValues();
for (int i = 0; i < values.length; i++) {
AttributeValue val = values[i];
if (val.getValue() != null && val.getValue() instanceof DynamicType) { //is Dynamic type
DynamicType type = (DynamicType) val.getValue();
if (timeIntervalMin != null && type.getLow() < timeIntervalMin) {
if (!Double.isInfinite(type.getLow())) {
issue = true;
}
node.getAttributeRow().setValue(val.getColumn(), DynamicUtilities.fitToInterval(type, timeIntervalMin, type.getHigh()));
}
if (timeIntervalMax != null && type.getHigh() > timeIntervalMax) {
if (!Double.isInfinite(type.getHigh())) {
issue = true;
}
node.getAttributeRow().setValue(val.getColumn(), DynamicUtilities.fitToInterval(type, type.getLow(), timeIntervalMax));
}
}
}
if (issue) {
report.logIssue(new Issue(NbBundle.getMessage(ImportContainerImpl.class, "ImportContainerException_TimeIntervalVerify_Node_OutOfBound", node.getId()), Level.WARNING));
}
}
for (EdgeDraftImpl edge : edgeMap.values()) {
boolean issue = false;
if (timeIntervalMin != null || timeIntervalMax != null) {
if (timeIntervalMin != null && edge.getTimeInterval() != null && edge.getTimeInterval().getLow() < timeIntervalMin) {
edge.setTimeInterval((TimeInterval) DynamicUtilities.fitToInterval(edge.getTimeInterval(), timeIntervalMin, edge.getTimeInterval().getHigh()));
issue = true;
}
if (timeIntervalMax != null && edge.getTimeInterval() != null && edge.getTimeInterval().getHigh() > timeIntervalMax) {
edge.setTimeInterval((TimeInterval) DynamicUtilities.fitToInterval(edge.getTimeInterval(), edge.getTimeInterval().getLow(), timeIntervalMax));
issue = true;
}
if (edge.getTimeInterval() == null) {
edge.setTimeInterval(new TimeInterval(timeIntervalMin, timeIntervalMax));
}
}
AttributeValue[] values = edge.getAttributeRow().getValues();
for (int i = 0; i < values.length; i++) {
AttributeValue val = values[i];
if (val.getValue() != null && val.getValue() instanceof DynamicType) { //is Dynamic type
DynamicType type = (DynamicType) val.getValue();
if (timeIntervalMin != null && type.getLow() < timeIntervalMin) {
if (!Double.isInfinite(type.getLow())) {
issue = true;
}
edge.getAttributeRow().setValue(val.getColumn(), DynamicUtilities.fitToInterval(type, timeIntervalMin, type.getHigh()));
}
if (timeIntervalMax != null && type.getHigh() > timeIntervalMax) {
if (!Double.isInfinite(type.getHigh())) {
issue = true;
}
edge.getAttributeRow().setValue(val.getColumn(), DynamicUtilities.fitToInterval(type, type.getLow(), timeIntervalMax));
}
}
}
if (issue) {
report.logIssue(new Issue(NbBundle.getMessage(ImportContainerImpl.class, "ImportContainerException_TimeIntervalVerify_Edge_OutOfBound", edge.getId()), Level.WARNING));