@Override public void DeleteOrderReceived(String msg) { // {delete:fieldName=PlotID,fieldValue=xxxxxxx} int pos = msg.indexOf(":"); if (pos > msg.length() || pos < 0) return; String order = msg.substring(1, pos); msg = msg.substring(pos + 1); if (!order.equalsIgnoreCase("delete")) { return; } pos = msg.indexOf(","); if (pos > msg.length() || pos < 0) return; // fileName为fieldName=PlotID String fieldName = msg.substring(0, pos); msg = msg.substring(pos + 1); pos = fieldName.indexOf("="); if (pos > fieldName.length() || pos < 0) return; fieldName = fieldName.substring(pos + 1); if (!fieldName.equalsIgnoreCase("PlotID")) { return; } // fileValue为fieldValue=xxxxxxx} String fieldValue = msg.substring(0, msg.length() - 1); pos = fieldValue.indexOf("="); if (pos > fieldValue.length() || pos < 0) return; fieldValue = fieldValue.substring(pos + 1, msg.length() - 1); // 查处所有数据集对象,依次遍历找到PlotID值为fieldValue的对象,并删除???? DatasetVector dv = (DatasetVector) (mapShow .getMap() .getWorkspace() .getDatasources() .get("multimedia") .getDatasets() .get("CAD")); Recordset recordset = dv.getRecordset(false, CursorType.DYNAMIC); recordset.moveFirst(); while (!recordset.isEOF()) { String value = (String) recordset.getFieldValue(fieldName); if (value.equalsIgnoreCase(fieldValue)) { recordset.delete(); recordset.update(); break; } recordset.moveNext(); } recordset.close(); recordset.dispose(); }
public void sendPlot() { Layer layerCAD = mMapControl.getMap().getLayers().get(0); Recordset record = ((DatasetVector) layerCAD.getDataset()).getRecordset(false, CursorType.DYNAMIC); record.moveFirst(); int failedCount = 0; // 记录发送失败的数据个数 while (!record.isEOF()) { String msg = "{content_type=2}"; String plotID = record.getFieldValue("PlotID").toString(); if (m_ArraySendedIDs.contains(plotID)) { record.moveNext(); continue; } msg += "{PlotID="; msg += plotID; msg += "}"; // 对象类型 GeometryType type = record.getGeometry().getType(); msg += "{type="; msg += type.value(); // type.toString(); msg += "}"; String geoJson = record.getGeometry().toXML(); msg += geoJson; boolean bOk = m_MessageQueue.sendMessageByType(msg, 2); if (bOk) { m_ArraySendedIDs.add(plotID); MyApplication.getInstance().showInfo("发送成功"); } else { failedCount++; } record.moveNext(); } record.dispose(); if (failedCount != 0) { MyApplication.getInstance().showInfo("发送失败" + failedCount + "个对象,请继续发送!"); } }
@Override public void PlotObjectsReceived(String msg) { // {PlotID=xxxxxxxxxx}xml int pos = msg.indexOf("}"); if (pos > msg.length() || pos < 0) return; String plotID = msg.substring(1, pos); msg = msg.substring(pos + 1); pos = plotID.indexOf("="); if (pos > msg.length() || pos < 0) return; plotID = plotID.substring(pos + 1); if (plotID.equalsIgnoreCase("0")) { return; } // 获取数据类型 {type=**} pos = msg.indexOf("}"); if (pos > msg.length() || pos < 0) return; String type = msg.substring(1, pos); msg = msg.substring(pos + 1); pos = type.indexOf("="); if (pos > type.length() || pos < 0) return; type = type.substring(pos + 1); GeometryType geometryType = (GeometryType) Enum.parse(GeometryType.class, Integer.parseInt(type)); Geometry geometry; if (geometryType == GeometryType.GEOGRAPHICOBJECT) { geometry = new GeoGraphicObject(); geometry.fromXML(msg); } else if (geometryType == GeometryType.GEOREGION) { geometry = new GeoRegion(); geometry.fromXML(msg); } else { geometry = new GeoLine(); geometry.fromXML(msg); } Layer layerCAD = mMapControl.getMap().getLayers().get(0); Recordset record = ((DatasetVector) layerCAD.getDataset()).getRecordset(false, CursorType.DYNAMIC); record.moveFirst(); String nodeName = "PlotID"; try { boolean bHasGeometry = false; while (!record.isEOF()) { String old = record.getFieldValue(nodeName).toString(); if (old.equalsIgnoreCase(plotID)) { record.edit(); record.setGeometry(geometry); record.update(); bHasGeometry = true; break; } record.moveNext(); } if (!bHasGeometry) { record.edit(); if (geometry.getType() == GeometryType.GEOLINE) { GeoStyle style = new GeoStyle(); style.setLineColor(new com.supermap.data.Color(127, 127, 127)); style.setFillForeColor(new com.supermap.data.Color(189, 235, 255)); style.setLineWidth(1.0); geometry.setStyle(style); } else if (geometry.getType() == GeometryType.GEOREGION) { GeoStyle style = new GeoStyle(); style.setLineColor(new com.supermap.data.Color(91, 89, 91)); style.setFillForeColor(new com.supermap.data.Color(189, 235, 255)); style.setLineWidth(1.0); geometry.setStyle(style); } record.addNew(geometry); record.setFieldValue(nodeName, plotID); record.update(); m_ArraySendedIDs.add(plotID); } } catch (Exception ex) { ex.printStackTrace(); } record.close(); record.dispose(); mMapControl.getMap().refresh(); }