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;
}
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);
}
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;
}
}
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;
}
}
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();
}
Aggregations