use of org.gephi.io.importer.plugin.file.spreadsheet.sheet.SheetRow in project gephi by gephi.
the class ImportMatrixProcess method execute.
@Override
public boolean execute() {
container.setFillLabelWithId(true);
Progress.start(progressTicket);
List<String> targetLabels = new ArrayList<>();
List<String> sourceLabels = new ArrayList<>();
boolean firstRow = true;
int rowCount = 0;
for (SheetRow row : parser) {
if (firstRow) {
// Start at 1, ignoring first value:
for (int i = 1; i < row.size(); i++) {
String label = row.get(i);
targetLabels.add(label);
if (label == null) {
logError(getMessage("ImportMatrixProcess.error.missingTarget", i));
}
}
firstRow = false;
} else {
if (row.size() > 0) {
String source = row.get(0);
sourceLabels.add(source);
if (source != null) {
for (int i = 1; i < row.size(); i++) {
int labelIndex = i - 1;
if (labelIndex < targetLabels.size()) {
String value = row.get(i);
String target = targetLabels.get(labelIndex);
if (target != null) {
try {
if (value != null && !value.trim().equals("0")) {
float weight = Float.parseFloat(value.replace(',', '.'));
if (weight != 0) {
addEdge(source.trim(), target.trim(), weight);
}
}
} catch (NumberFormatException ex) {
logError(getMessage("ImportMatrixProcess.error.parseWeightError", value));
}
}
} else {
logError(getMessage("ImportMatrixProcess.error.invalidRowLength", row.size() - 1, targetLabels.size()));
break;
}
}
} else {
logError(getMessage("ImportMatrixProcess.error.missingSource"));
}
}
rowCount++;
}
}
if (rowCount != targetLabels.size()) {
logWarning(getMessage("ImportMatrixProcess.warning.inconsistentNumberOfLines", rowCount, targetLabels.size()));
} else if (!sourceLabels.equals(targetLabels)) {
logWarning(getMessage("ImportMatrixProcess.warning.inconsistentLabels"));
}
Progress.finish(progressTicket);
return !cancel;
}
use of org.gephi.io.importer.plugin.file.spreadsheet.sheet.SheetRow in project gephi by gephi.
the class AbstractImporterSpreadsheet method autoDetectImportMode.
protected void autoDetectImportMode() {
try {
SheetParser parser = createParserWithoutHeaders();
Mode mode = null;
Iterator<SheetRow> iterator = parser.iterator();
if (iterator.hasNext()) {
SheetRow firstRow = iterator.next();
if (firstRow.get(0) == null || firstRow.get(0).trim().isEmpty()) {
mode = Mode.MATRIX;
} else {
// Detect very probable edges table:
for (int i = 0; i < firstRow.size(); i++) {
String value = firstRow.get(i);
if ("source".equalsIgnoreCase(value) || "target".equalsIgnoreCase(value)) {
mode = Mode.EDGES_TABLE;
break;
}
}
// Detect probable nodes table:
if (mode == null) {
for (int i = 0; i < firstRow.size(); i++) {
String value = firstRow.get(i);
if ("id".equalsIgnoreCase(value) || "label".equalsIgnoreCase(value) || "timeset".equalsIgnoreCase(value)) {
mode = Mode.NODES_TABLE;
}
}
}
}
}
if (mode == null) {
// Default adjacency list:
mode = Mode.ADJACENCY_LIST;
}
setMode(mode);
} catch (IOException ex) {
// NOOP
}
}
Aggregations