Ejemplo n.º 1
0
  /*
   * Se ejecuta una vez finalizado el interfaz despues de pasar por todas las pantallas.
   * (non-Javadoc)
   * @see com.vividsolutions.jump.workbench.plugin.ThreadedPlugIn#run(com.vividsolutions.jump.task.TaskMonitor, com.vividsolutions.jump.workbench.plugin.PlugInContext)
   */
  public void run(TaskMonitor monitor, PlugInContext context) throws Exception {
    try {
      monitor.report(
          I18N.get(
              PluginMobileExtracti18n, MobilePluginI18NResource.MobileModifyPanel01_deletingProy));

      ExtractionProject eProject =
          (ExtractionProject) blackboard.get(MobileModifyPanel01.SELECTED_EXTRACT_PROJECT);

      // guardamos la informacion en base de datos
      final String sUrlPrefix =
          Constants.APLICACION.getString(UserPreferenceConstants.LOCALGIS_SERVER_URL);
      AdministradorCartografiaClient administradorCartografiaClient =
          new AdministradorCartografiaClient(
              sUrlPrefix
                  + WebAppConstants.GEOPISTA_WEBAPP_NAME
                  + ServletConstants.ADMINISTRADOR_CARTOGRAFIA_SERVLET_NAME);
      administradorCartografiaClient.deleteExtractProject(eProject);

      // Borramos los datos subidos al servidor.
      httpDeleteProject(Constants.URL_DELETE_SERVER, eProject);

      String dirBase =
          UserPreferenceStore.getUserPreference(
              UserPreferenceConstants.PREFERENCES_DATA_PATH_KEY,
              UserPreferenceConstants.DEFAULT_DATA_PATH,
              true);
      dirBase += File.separator + "maps";

      String projectName = eProject.getNombreProyecto();
      String idProyecto = eProject.getIdProyecto();

      String dirMapName = projectName + "." + idProyecto;
      File dirBaseMake = new File(dirBase, dirMapName);
      if (dirBaseMake.exists()) {
        MobileUtils.deleteDir(dirBaseMake);
        logger.info("Borrando fichero local:" + dirBaseMake);
      }

    } finally {
      // borramos la cuadrícula
      LayerManager layerManager = context.getLayerManager();
      Layer graticuleLayer = layerManager.getLayer(GraticuleCreatorEngine.getGraticuleName());
      if (graticuleLayer != null) {
        layerManager.remove(graticuleLayer);
      }
    }
  }
  private JScrollPane getGraticuleCells() {
    // sacamos las cuadrículas de la rejilla
    LayerManager layerManager = context.getLayerManager();
    Layer graticuleLayer = layerManager.getLayer(GraticuleCreatorEngine.getGraticuleName());
    if (graticuleLayer != null) {
      FeatureCollectionWrapper fCollWrapper = graticuleLayer.getFeatureCollectionWrapper();
      List featList = fCollWrapper.getFeatures();
      jComboList = new ArrayList<JComboBox>();
      Feature feature = null;
      Integer cellId = null;
      JPanel jPaneCells = new JPanel();
      int cols = featList.size() / 2;
      if (featList.size() % 2 != 0) {
        cols++;
      }
      jPaneCells.setLayout(new GridLayout(cols, 2));

      //	        //capas extraídas
      //	        ArrayList<GeopistaLayer> writeableLayers = (ArrayList<GeopistaLayer>)
      // blackboard.get(MobileExtractPanel01.MOBILE_WRITEABLE_LAYERS);
      //	        ArrayList<GeopistaLayer> readableLayers = (ArrayList<GeopistaLayer>)
      // blackboard.get(MobileExtractPanel01.MOBILE_READABLE_LAYERS);
      //	        ArrayList<String> listLayersId = new ArrayList<String>();
      //	        GeopistaLayer geopistaLayer = null;
      //	        for(int i=0; i<writeableLayers.size(); i++){
      //	        	geopistaLayer = writeableLayers.get(i);
      //	        	listLayersId.add(String.valueOf(geopistaLayer.getId_LayerDataBase()));
      //	        }
      //	        for(int i=0; i<readableLayers.size(); i++){
      //	        	geopistaLayer = readableLayers.get(i);
      //	        	listLayersId.add(String.valueOf(geopistaLayer.getId_LayerDataBase()));
      //	        }

      // obtenemos el proyecto de extracción seleccionado de la pantalla anterior
      ExtractionProject eProject =
          (ExtractionProject) blackboard.get(MobileAssignCellsPanel01.SELECTED_EXTRACT_PROJECT);

      JPanel auxPanel = null;
      arrayNombresUsuarios = null;
      listaUsuariosPermisos = null;
      HashMap<String, String> usuariosAsignados = null;
      final String sUrlPrefix = Constants.APLICACION.getString("geopista.conexion.servidorurl");
      try {
        // añadimos los usuarios a los combos
        AdministradorCartografiaClient administradorCartografiaClient =
            new AdministradorCartografiaClient(
                sUrlPrefix
                    + WebAppConstants.GEOPISTA_WEBAPP_NAME
                    + ServletConstants.ADMINISTRADOR_CARTOGRAFIA_SERVLET_NAME);
        ListaUsuarios usersRealList =
            (ListaUsuarios)
                administradorCartografiaClient.getUsersPermLayers(
                    eProject.getIdExtractLayersList());
        // usuarios ya asignados
        usuariosAsignados =
            administradorCartografiaClient.getAssignCellsExtractProject(eProject.getIdProyecto());
        // usuarios con permisos sobre las capas
        Hashtable<String, Usuario> usuariosReales =
            (Hashtable<String, Usuario>) usersRealList.gethUsuarios();
        Set<String> keySetUsers = usuariosReales.keySet();
        arrayNombresUsuarios = new String[keySetUsers.size() + 1];
        arrayNombresUsuarios[0] = ComboItemGraticuleListener.SIN_ASIGNAR;
        listaUsuariosPermisos = new ArrayList<Usuario>();
        String userKey = null;
        Usuario usuario = null;
        int k = 1;
        for (Iterator iterator = keySetUsers.iterator(); iterator.hasNext(); ) {
          userKey = (String) iterator.next();
          usuario = usuariosReales.get(userKey);
          arrayNombresUsuarios[k] = usuario.getName();
          listaUsuariosPermisos.add(usuario);
          k++;
        }
      } catch (Exception e) {
        e.printStackTrace();
      }

      JComboBox jcombo = null;
      ILayerViewPanel layerViewPanel = (ILayerViewPanel) context.getLayerViewPanel();
      JLabel jLabelCelda = null;
      String cellIdStr = null;
      Map<Layer, HashSet<Feature>> visibleLayerToFeaturesInFenceMap = null;
      graticuleLayer.setVisible(false); // para quitar la cuadrícula de la intersección
      // añadimos el identificador de cada una al panel
      for (int i = 0; i < featList.size(); i++) {
        feature = (Feature) featList.get(i);
        visibleLayerToFeaturesInFenceMap =
            layerViewPanel.visibleLayerToFeaturesInFenceMap(feature.getGeometry());
        cellId = (Integer) feature.getAttribute(GraticuleCreatorEngine.ATR_CELL_ID);
        auxPanel = new JPanel();
        jLabelCelda =
            new JLabel(
                I18N.get(
                        MobileAssignCellsPlugin.PluginMobileExtracti18n,
                        MobilePluginI18NResource.MobileAssignCellsPanel02_celda)
                    + cellId);
        jcombo = new JComboBox(arrayNombresUsuarios);
        cellIdStr = String.valueOf(cellId);
        jcombo.setName(cellIdStr);

        // celdas con features o sin ellas
        if (visibleLayerToFeaturesInFenceMap == null
            || visibleLayerToFeaturesInFenceMap.size() == 0) {
          jLabelCelda.setEnabled(false);
          jcombo.setEnabled(false);
        } else {
          jLabelCelda.setForeground(Color.RED);
          jcombo.addItemListener(
              new ComboItemGraticuleListener(
                  layerViewPanel, graticuleLayer, feature, jLabelCelda, wizardContext));
          jComboList.add(jcombo);
        }

        auxPanel.add(jLabelCelda);
        auxPanel.add(jcombo);
        jPaneCells.add(auxPanel);
      }
      graticuleLayer.setVisible(true);

      // seleccionamos los usuario asignados en los combos
      if (usuariosAsignados != null && usuariosAsignados.size() != 0) {
        for (int i = 0; i < jComboList.size(); i++) {
          jcombo = jComboList.get(i);
          cellIdStr = jcombo.getName();
          if (usuariosAsignados.containsKey(cellIdStr)) {
            seleccionaUsuarioComboCelda(jcombo, usuariosAsignados.get(cellIdStr));
          }
        }
      }

      jPaneInternal = new JScrollPane();
      jPaneInternal.setViewportView(jPaneCells);
      jPaneInternal.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    }

    return jPaneInternal;
  }
  private void btnEliminar_actionPerformed(ActionEvent e) {

    GeopistaMap selectMap = (GeopistaMap) lstListaMapas.getSelectedValue();

    if (selectMap != null) {

      int deleteMapConfirm =
          JOptionPane.showConfirmDialog(
              aplicacion.getMainFrame(),
              aplicacion.getI18nString("GeopistaListaMapasPanel.ConfimarBorradoMapa")
                  + " "
                  + selectMap.getName()
                  + "?",
              aplicacion.getI18nString("GeopistaListaMapasPanel.BorrarMapa"),
              JOptionPane.YES_NO_OPTION);
      if (deleteMapConfirm != 0) return;

      String mapDeleteSelected = selectMap.getBasePath();

      if (!selectMap.isSystemMap()) {
        File dirBaseMake = new File(mapDeleteSelected);

        File[] deleteFiles = dirBaseMake.listFiles();
        if (deleteFiles != null) {
          for (int n = 0; n < deleteFiles.length; n++) {
            try {
              File actualDeleteFile = deleteFiles[n];
              boolean borrado = actualDeleteFile.delete();
              if (!borrado)
                throw new IOException(
                    aplicacion.getI18nString("GeopistaListaMapasPanel.ElMapaInicioErrorBorrado")
                        + " "
                        + selectMap.getName()
                        + " "
                        + aplicacion.getI18nString("GeopistaListaMapasPanel.NoBorrado"));

              if (dirBaseMake != null) {
                borrado = dirBaseMake.delete();
              }

            } catch (Exception e1) {
              JOptionPane.showMessageDialog(aplicacion.getMainFrame(), e1.getMessage());
            }
          }
        }

      } else {
        if (selectMap.getIdEntidad() == 0) {
          deleteMapConfirm =
              JOptionPane.showConfirmDialog(
                  aplicacion.getMainFrame(),
                  aplicacion.getI18nString("GeopistaListaMapasPanel.ConfimarBorradoMapaEntidad0")
                      + " "
                      + selectMap.getName()
                      + "?",
                  aplicacion.getI18nString("GeopistaListaMapasPanel.BorrarMapa"),
                  JOptionPane.YES_NO_OPTION);
          if (deleteMapConfirm != 0) return;
        }

        String sUrlPrefix;
        // ------NUEVO------>
        if (SSOAuthManager.isSSOActive())
          sUrlPrefix = aplicacion.getString(SSOConstants.SSO_SERVER_URL);
        else sUrlPrefix = aplicacion.getString("geopista.conexion.servidor");
        // ----FIN NUEVO---->
        AdministradorCartografiaClient administradorCartografiaClient =
            new AdministradorCartografiaClient(sUrlPrefix + "/AdministradorCartografiaServlet");
        try {
          if (!aplicacion.isLogged()) {
            aplicacion.setProfile("Geopista");
            aplicacion.login();
          }

          if (aplicacion.isLogged()) {
            administradorCartografiaClient.deleteMap(selectMap, Locale.getDefault().toString());

          } else {
            return;
          }
        } catch (Exception e1) {

          Throwable deleteError = e1.getCause();
          if (deleteError instanceof PermissionException) {
            JOptionPane.showMessageDialog(
                aplicacion.getMainFrame(),
                aplicacion.getI18nString("GeopistaListaMapasPanel.NoPermisosBorrarMapa"));
          }
          if (deleteError instanceof SystemMapException) {
            JOptionPane.showMessageDialog(
                aplicacion.getMainFrame(),
                aplicacion.getI18nString("GeopistaListaMapasPanel.MapaDeSistemaNoBorrar"));
          }
          if (deleteError instanceof SQLException) {
            JOptionPane.showMessageDialog(
                aplicacion.getMainFrame(),
                aplicacion.getI18nString("GeopistaListaMapasPanel.MapaNoSePuedeBorrarPublicado"));
          }
          if (deleteError instanceof PublishedMapException) {
            JOptionPane.showMessageDialog(
                aplicacion.getMainFrame(),
                aplicacion.getI18nString("GeopistaListaMapasPanel.MapaNoSePuedeBorrarPublicado"));
          }
          return;
        }
      }
      listModel.removeElement(selectMap);
    }
  }