if (parameters.isRemoveEdgeWithWeightZero()) {
String id = edge.getId();
String sourceTargetId = edge.getSource().getId() + "-" + edge.getTarget().getId();
edgeMap.remove(id);
edgeSourceTargetMap.remove(sourceTargetId);
report.logIssue(new Issue(NbBundle.getMessage(ImportContainerImpl.class, "ImportContainerException_Weight_Zero_Ignored", id), Level.SEVERE));
}
}
}
//Graph EdgeDefault
if (directedEdgesCount > 0 && undirectedEdgesCount == 0) {
parameters.setEdgeDefault(EdgeDefault.DIRECTED);
} else if (directedEdgesCount == 0 && undirectedEdgesCount > 0) {
parameters.setEdgeDefault(EdgeDefault.UNDIRECTED);
} else if (directedEdgesCount > 0 && undirectedEdgesCount > 0) {
parameters.setEdgeDefault(EdgeDefault.MIXED);
}
//Is dynamic graph
for (NodeDraftImpl node : nodeMap.values()) {
dynamicGraph = node.getTimeInterval() != null;
if (dynamicGraph) {
break;
}
}
if (!dynamicGraph) {
for (EdgeDraftImpl edge : edgeMap.values()) {
dynamicGraph = edge.getTimeInterval() != null;
if (dynamicGraph) {
break;
}
}
}
if (!dynamicGraph) {
for (AttributeColumn col : attributeModel.getNodeTable().getColumns()) {
dynamicGraph = col.getType().isDynamicType();
if (dynamicGraph) {
break;
}
}
for (AttributeColumn col : attributeModel.getEdgeTable().getColumns()) {
dynamicGraph = col.getType().isDynamicType();
if (dynamicGraph) {
break;
}
}
}
//Print time interval values to report
if (timeIntervalMin != null || timeIntervalMax != null) {
if (timeFormat.equals(TimeFormat.DATE)) {
try {
String message = "[" + (timeIntervalMin != null ? DynamicUtilities.getXMLDateStringFromDouble(timeIntervalMin) : "-inf") + ",";
message += (timeIntervalMax != null ? DynamicUtilities.getXMLDateStringFromDouble(timeIntervalMax) : "+inf") + "]";
report.log(NbBundle.getMessage(ImportContainerImpl.class, "ImportContainerLog.TimeInterval", message));
} catch (Exception e) {
}
} else {
String message = "[" + (timeIntervalMin != null ? timeIntervalMin.toString() : "-inf") + ",";
message += (timeIntervalMax != null ? timeIntervalMax.toString() : "+inf") + "]";
report.log(NbBundle.getMessage(ImportContainerImpl.class, "ImportContainerLog.TimeInterval", message));
}
}
//Print TimeFormat
if (dynamicGraph) {
report.log(NbBundle.getMessage(ImportContainerImpl.class, "ImportContainerLog.TimeFormat", timeFormat.toString()));
}
//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));
}
}
}
return true;