コード例 #1
0
  @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();
  }
コード例 #2
0
  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 + "个对象,请继续发送!");
    }
  }
コード例 #3
0
  @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();
  }