Search in sources :

Example 6 with SheetRow

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;
}
Also used : SheetRow(org.gephi.io.importer.plugin.file.spreadsheet.sheet.SheetRow) ArrayList(java.util.ArrayList)

Example 7 with SheetRow

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
    }
}
Also used : SheetRow(org.gephi.io.importer.plugin.file.spreadsheet.sheet.SheetRow) Mode(org.gephi.io.importer.plugin.file.spreadsheet.process.SpreadsheetGeneralConfiguration.Mode) SheetParser(org.gephi.io.importer.plugin.file.spreadsheet.sheet.SheetParser) IOException(java.io.IOException)

Aggregations

SheetRow (org.gephi.io.importer.plugin.file.spreadsheet.sheet.SheetRow)7 IOException (java.io.IOException)3 Map (java.util.Map)3 SheetParser (org.gephi.io.importer.plugin.file.spreadsheet.sheet.SheetParser)3 ArrayList (java.util.ArrayList)2 BigDecimal (java.math.BigDecimal)1 BigInteger (java.math.BigInteger)1 HashMap (java.util.HashMap)1 LinkedHashSet (java.util.LinkedHashSet)1 JTable (javax.swing.JTable)1 TableModelListener (javax.swing.event.TableModelListener)1 TableModel (javax.swing.table.TableModel)1 TimeRepresentation (org.gephi.graph.api.TimeRepresentation)1 IntervalDoubleMap (org.gephi.graph.api.types.IntervalDoubleMap)1 IntervalIntegerMap (org.gephi.graph.api.types.IntervalIntegerMap)1 IntervalLongMap (org.gephi.graph.api.types.IntervalLongMap)1 IntervalStringMap (org.gephi.graph.api.types.IntervalStringMap)1 TimeMap (org.gephi.graph.api.types.TimeMap)1 TimeSet (org.gephi.graph.api.types.TimeSet)1 TimestampDoubleMap (org.gephi.graph.api.types.TimestampDoubleMap)1