Search in sources :

Example 96 with Record

use of com.revolsys.record.Record in project com.revolsys.open by revolsys.

the class FileRecordLayer method revertDo.

protected boolean revertDo() {
    if (this.resource == null) {
        return false;
    } else {
        if (this.resource.exists()) {
            try (final RecordReader reader = RecordReader.newRecordReader(this.resource)) {
                if (reader == null) {
                    Logs.error(this, "Cannot find reader for: " + this.resource);
                    return false;
                } else {
                    final Map<String, Object> properties = getProperties();
                    reader.setProperties(properties);
                    final RecordDefinition recordDefinition = reader.getRecordDefinition();
                    setRecordDefinition(recordDefinition);
                    if (recordDefinition == null) {
                        Logs.error(this, "No record definition found for: " + this.url);
                        return false;
                    } else {
                        GeometryFactory geometryFactory = recordDefinition.getGeometryFactory();
                        clearRecords();
                        try (BaseCloseable eventsDisabled = eventsDisabled()) {
                            for (final Record record : reader) {
                                final Geometry geometry = record.getGeometry();
                                if (geometry != null) {
                                    if (geometryFactory == null || !geometryFactory.isHasCoordinateSystem()) {
                                        final GeometryFactory geometryFactory2 = geometry.getGeometryFactory();
                                        if (geometryFactory2.isHasCoordinateSystem()) {
                                            setGeometryFactory(geometryFactory2);
                                            geometryFactory = geometryFactory2;
                                            recordDefinition.setGeometryFactory(geometryFactory2);
                                        }
                                    }
                                }
                                newRecordInternal(record);
                            }
                        }
                    }
                    refreshBoundingBox();
                    initRecordMenu();
                    setExists(true);
                    return true;
                }
            } catch (final RuntimeException e) {
                Logs.error(this, "Error reading: " + this.resource, e);
            } finally {
                refresh();
            }
        } else {
            Logs.error(this, "Cannot find: " + this.url);
        }
    }
    return false;
}
Also used : Geometry(com.revolsys.geometry.model.Geometry) BaseCloseable(com.revolsys.io.BaseCloseable) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) RecordReader(com.revolsys.record.io.RecordReader) Record(com.revolsys.record.Record) RecordDefinition(com.revolsys.record.schema.RecordDefinition)

Example 97 with Record

use of com.revolsys.record.Record in project com.revolsys.open by revolsys.

the class MergeRecordsDialog method setMergedRecords.

public void setMergedRecords(String errorMessage, final Map<Record, Set<LayerRecord>> mergedRecords) {
    final Set<Record> unMergeableRecords = new HashSet<>(this.mergeableToOiginalRecordMap.keySet());
    unMergeableRecords.removeAll(mergedRecords.keySet());
    if (!mergedRecords.isEmpty()) {
        int i = 0;
        for (final Entry<Record, Set<LayerRecord>> mergedEntry : mergedRecords.entrySet()) {
            final Record mergedObject = mergedEntry.getKey();
            final Set<LayerRecord> originalObjects = mergedEntry.getValue();
            setMergedRecord(i, mergedObject, originalObjects);
            i++;
        }
    }
    if (!unMergeableRecords.isEmpty() || Property.hasValue(errorMessage)) {
        final Set<LayerRecord> records = new LinkedHashSet<>();
        for (final Record record : unMergeableRecords) {
            final LayerRecord originalRecord = this.mergeableToOiginalRecordMap.get(record);
            if (originalRecord != null) {
                records.add(originalRecord);
            }
        }
        final TablePanel tablePanel = RecordListTableModel.newPanel(this.layer, records);
        final RecordListTableModel tableModel = tablePanel.getTableModel();
        tableModel.setEditable(false);
        tablePanel.setPreferredSize(new Dimension(100, 50 + unMergeableRecords.size() * 22));
        final JPanel panel = Panels.titledTransparentBorderLayout(unMergeableRecords.size() + " Un-Mergeable Records");
        if (!Property.hasValue(errorMessage)) {
            errorMessage = "The following records could not be merged and will not be modified.";
        }
        final JLabel unMergeLabel = new JLabel("<html><p style=\"color:red\">" + errorMessage + "</p></html>");
        panel.add(unMergeLabel, BorderLayout.NORTH);
        panel.add(tablePanel, BorderLayout.SOUTH);
        this.mergedRecordsPanel.add(panel);
    }
    SwingUtil.autoAdjustPosition(this);
    setVisible(true);
}
Also used : LinkedHashSet(java.util.LinkedHashSet) JPanel(javax.swing.JPanel) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet) Set(java.util.Set) JLabel(javax.swing.JLabel) Dimension(java.awt.Dimension) Record(com.revolsys.record.Record) ArrayRecord(com.revolsys.record.ArrayRecord) LayerRecord(com.revolsys.swing.map.layer.record.LayerRecord) LayerRecord(com.revolsys.swing.map.layer.record.LayerRecord) RecordListTableModel(com.revolsys.swing.table.record.model.RecordListTableModel) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet) TablePanel(com.revolsys.swing.table.TablePanel)

Example 98 with Record

use of com.revolsys.record.Record in project com.revolsys.open by revolsys.

the class AbstractRecordLayer method getHighlightedBoundingBox.

public BoundingBox getHighlightedBoundingBox() {
    final GeometryFactory geometryFactory = getGeometryFactory();
    if (geometryFactory == null) {
        return BoundingBox.empty();
    } else {
        BoundingBox boundingBox = geometryFactory.newBoundingBoxEmpty();
        for (final Record record : getHighlightedRecords()) {
            final Geometry geometry = record.getGeometry();
            boundingBox = boundingBox.expandToInclude(geometry);
        }
        return boundingBox;
    }
}
Also used : Geometry(com.revolsys.geometry.model.Geometry) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) BoundingBox(com.revolsys.geometry.model.BoundingBox) ArrayRecord(com.revolsys.record.ArrayRecord) Record(com.revolsys.record.Record)

Example 99 with Record

use of com.revolsys.record.Record in project com.revolsys.open by revolsys.

the class AbstractRecordLayer method getPasteRecordGeometry.

protected Geometry getPasteRecordGeometry(final LayerRecord record, final boolean alert) {
    try {
        if (record == null) {
            return null;
        } else {
            final RecordDefinition recordDefinition = getRecordDefinition();
            final FieldDefinition geometryField = recordDefinition.getGeometryField();
            if (geometryField != null) {
                final MapPanel parentComponent = getMapPanel();
                Geometry geometry = null;
                DataType geometryDataType = null;
                Class<?> layerGeometryClass = null;
                final GeometryFactory geometryFactory = getGeometryFactory();
                geometryDataType = geometryField.getDataType();
                layerGeometryClass = geometryDataType.getJavaClass();
                RecordReader reader = ClipboardUtil.getContents(RecordReaderTransferable.DATA_OBJECT_READER_FLAVOR);
                if (reader == null) {
                    final String string = ClipboardUtil.getContents(DataFlavor.stringFlavor);
                    if (Property.hasValue(string)) {
                        try {
                            geometry = geometryFactory.geometry(string);
                            geometry = geometryFactory.geometry(layerGeometryClass, geometry);
                            if (geometry != null) {
                                return geometry;
                            }
                        } catch (final Throwable e) {
                        }
                        final Resource resource = new ByteArrayResource("t.csv", string);
                        reader = RecordReader.newRecordReader(resource);
                    } else {
                        return null;
                    }
                }
                if (reader != null) {
                    try {
                        for (final Record sourceRecord : reader) {
                            if (geometry == null) {
                                final Geometry sourceGeometry = sourceRecord.getGeometry();
                                if (sourceGeometry == null) {
                                    if (alert) {
                                        JOptionPane.showMessageDialog(parentComponent, "Clipboard does not contain a record with a geometry.", "Paste Geometry", JOptionPane.ERROR_MESSAGE);
                                    }
                                    return null;
                                }
                                geometry = geometryFactory.geometry(layerGeometryClass, sourceGeometry);
                                if (geometry == null) {
                                    if (alert) {
                                        JOptionPane.showMessageDialog(parentComponent, "Clipboard should contain a record with a " + geometryDataType + " not a " + sourceGeometry.getGeometryType() + ".", "Paste Geometry", JOptionPane.ERROR_MESSAGE);
                                    }
                                    return null;
                                }
                            } else {
                                if (alert) {
                                    JOptionPane.showMessageDialog(parentComponent, "Clipboard contains more than one record. Copy a single record.", "Paste Geometry", JOptionPane.ERROR_MESSAGE);
                                }
                                return null;
                            }
                        }
                    } finally {
                        FileUtil.closeSilent(reader);
                    }
                    if (geometry == null) {
                        if (alert) {
                            JOptionPane.showMessageDialog(parentComponent, "Clipboard does not contain a record with a geometry.", "Paste Geometry", JOptionPane.ERROR_MESSAGE);
                        }
                    } else if (geometry.isEmpty()) {
                        if (alert) {
                            JOptionPane.showMessageDialog(parentComponent, "Clipboard contains an empty geometry.", "Paste Geometry", JOptionPane.ERROR_MESSAGE);
                        }
                        return null;
                    } else {
                        return geometry;
                    }
                }
            }
            return null;
        }
    } catch (final Throwable t) {
        return null;
    }
}
Also used : MapPanel(com.revolsys.swing.map.MapPanel) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) FieldDefinition(com.revolsys.record.schema.FieldDefinition) RecordReader(com.revolsys.record.io.RecordReader) ListRecordReader(com.revolsys.record.io.ListRecordReader) ByteArrayResource(com.revolsys.spring.resource.ByteArrayResource) Resource(com.revolsys.spring.resource.Resource) LineString(com.revolsys.geometry.model.LineString) ByteArrayResource(com.revolsys.spring.resource.ByteArrayResource) RecordDefinition(com.revolsys.record.schema.RecordDefinition) Geometry(com.revolsys.geometry.model.Geometry) DataType(com.revolsys.datatype.DataType) ArrayRecord(com.revolsys.record.ArrayRecord) Record(com.revolsys.record.Record)

Example 100 with Record

use of com.revolsys.record.Record in project com.revolsys.open by revolsys.

the class RecordLayerErrorsTableModel method valueChanged.

@Override
public void valueChanged(final ListSelectionEvent event) {
    final RecordRowTable table = getTable();
    final ListSelectionModel selectionModel = table.getSelectionModel();
    final int rowCount = super.getRowCount();
    final boolean mergedSelected = selectionModel.isSelectedIndex(rowCount);
    for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
        final Record record = getRecord(rowIndex);
        if (record != null) {
            if (mergedSelected || selectionModel.isSelectedIndex(rowIndex)) {
                this.layer.addHighlightedRecords((LayerRecord) record);
            } else {
                this.layer.unHighlightRecords((LayerRecord) record);
            }
        }
    }
    this.layer.zoomToHighlighted();
}
Also used : ListSelectionModel(javax.swing.ListSelectionModel) Record(com.revolsys.record.Record) LayerRecord(com.revolsys.swing.map.layer.record.LayerRecord) RecordRowTable(com.revolsys.swing.table.record.RecordRowTable)

Aggregations

Record (com.revolsys.record.Record)198 ArrayRecord (com.revolsys.record.ArrayRecord)43 RecordReader (com.revolsys.record.io.RecordReader)34 RecordDefinition (com.revolsys.record.schema.RecordDefinition)34 Geometry (com.revolsys.geometry.model.Geometry)29 LineString (com.revolsys.geometry.model.LineString)21 Point (com.revolsys.geometry.model.Point)20 ChannelWriter (com.revolsys.io.channels.ChannelWriter)19 Identifier (com.revolsys.identifier.Identifier)17 ArrayList (java.util.ArrayList)16 FieldDefinition (com.revolsys.record.schema.FieldDefinition)15 GeometryFactory (com.revolsys.geometry.model.GeometryFactory)14 LayerRecord (com.revolsys.swing.map.layer.record.LayerRecord)13 NoSuchElementException (java.util.NoSuchElementException)13 DataType (com.revolsys.datatype.DataType)10 Query (com.revolsys.record.query.Query)9 HashMap (java.util.HashMap)9 List (java.util.List)8 LinkedHashMap (java.util.LinkedHashMap)7 Edge (com.revolsys.geometry.graph.Edge)6