public void enteredFromLeft(Map dataMap) { if (!Constants.APLICACION.isLogged()) { Constants.APLICACION.login(); } if (!Constants.APLICACION.isLogged()) { wizardContext.cancelWizard(); return; } try { jbInit(); } catch (Exception e) { e.printStackTrace(); } }
public boolean execute(PlugInContext context) throws Exception { reportNothingToUndoYet(context); // limpiamos lo que haya podido quedar de ejecuciones anteriores emptyBlackboard(); WizardDialog d = new WizardDialog( GeopistaUtil.getFrame(context.getWorkbenchGuiComponent()), Constants.APLICACION.getI18nString("ExtractDialogGestionar"), context.getErrorHandler()); d.init( new WizardPanel[] { new MobileModifyPanel01("MobileModifyPanel01", null, context), }); d.setSize(520, 650); d.setLocation(10, 20); d.setVisible(true); if (!d.wasFinishPressed()) { LayerManager layerManager = context.getLayerManager(); if (layerManager != null) { Layer graticuleLayer = layerManager.getLayer(GraticuleCreatorEngine.getGraticuleName()); // si existe una cuadrícula la borramos if (graticuleLayer != null) { layerManager.remove(graticuleLayer); } } return false; } return true; }
/* * 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); } } }
public class MobileAssignCellsPanel02 extends JPanel implements WizardPanel { public static final String MOBILE_USERS_GRATICULES = "MOBILE_USERS_GRATICULES"; private Blackboard blackboard = Constants.APLICACION.getBlackboard(); private String localId = null; private WizardContext wizardContext; private PlugInContext context; private List<JComboBox> jComboList; /** @return null to turn the Next button into a Finish button */ private String nextID = null; private JScrollPane jPaneInternal; private String[] arrayNombresUsuarios; // array de usuarios de los combos private JComboBox jcomboSelecAll; private List<Usuario> listaUsuariosPermisos; // lista de usuarios con permiso de lectura sobre las capas extraídas public MobileAssignCellsPanel02(String id, String nextId, PlugInContext context) { this.nextID = nextId; this.localId = id; this.context = context; this.arrayNombresUsuarios = null; this.listaUsuariosPermisos = null; } public void enteredFromLeft(Map dataMap) { if (!Constants.APLICACION.isLogged()) { Constants.APLICACION.login(); } if (!Constants.APLICACION.isLogged()) { wizardContext.cancelWizard(); return; } try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.removeAll(); // creamos y centramos la cuadrícula con los valores pasados // crearCentrarCuadricula(context, (Double) // blackboard.get(GraticuleCreatorPlugIn.CELL_SIDE_LENGTH_X), // (Double) blackboard.get(GraticuleCreatorPlugIn.CELL_SIDE_LENGTH_Y), // (Integer) blackboard.get(GraticuleCreatorPlugIn.LAYER_HEIGHT_IN_CELLS), // (Integer) blackboard.get(GraticuleCreatorPlugIn.LAYER_WIDTH_IN_CELLS), // (Coordinate) blackboard.get(GraticuleCreatorPlugIn.SOUTHWEST_CORNER_OF_LEFT_LAYER)); this.setLayout(new GridBagLayout()); java.awt.GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 1; gridBagConstraints1.weightx = 1.0; gridBagConstraints1.weighty = 1.0; gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints1.ipadx = -21; gridBagConstraints1.ipady = 141; java.awt.GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.gridx = 0; gridBagConstraints2.gridy = 0; gridBagConstraints2.insets = new java.awt.Insets(5, 5, 5, 5); this.add(getGraticuleCells(), gridBagConstraints1); this.add(getPanelButtonAllUser(), gridBagConstraints2); } /** * Crea una cuadrícula con los parámetros indicados y centra el mapa sobre la misma * * @param plugContext * @param cellSideLengthX * @param cellSideLengthY * @param layerHeightInCells * @param layerWidthInCells * @param southwestCornerOfLeftLayer * @throws NoninvertibleTransformException */ public static void crearCentrarCuadricula( PlugInContext plugContext, double cellSideLengthX, double cellSideLengthY, int layerWidthInCells, int layerHeightInCells, Coordinate southwestCornerOfLeftLayer) { // creación de la última cuadrícula GraticuleCreatorEngine graticuleCreator = new GraticuleCreatorEngine(); graticuleCreator.setCellSideLengthX(cellSideLengthX); graticuleCreator.setCellSideLengthY(cellSideLengthY); graticuleCreator.setLayerWidthInCells(layerWidthInCells); graticuleCreator.setLayerHeightInCells(layerHeightInCells); graticuleCreator.setSouthwestCornerOfLeftLayer(southwestCornerOfLeftLayer); // graticuleCreator.setCellSideLengthX((Double) // blackboard.get(GraticuleCreatorPlugIn.CELL_SIDE_LENGTH_X)); // graticuleCreator.setCellSideLengthY((Double) // blackboard.get(GraticuleCreatorPlugIn.CELL_SIDE_LENGTH_Y)); // graticuleCreator.setLayerWidthInCells((Integer) // blackboard.get(GraticuleCreatorPlugIn.LAYER_WIDTH_IN_CELLS)); // graticuleCreator.setLayerHeightInCells((Integer) // blackboard.get(GraticuleCreatorPlugIn.LAYER_HEIGHT_IN_CELLS)); // graticuleCreator.setSouthwestCornerOfLeftLayer((Coordinate) // blackboard.get(GraticuleCreatorPlugIn.SOUTHWEST_CORNER_OF_LEFT_LAYER)); graticuleCreator.execute(plugContext); // centrado de la visión double minX = graticuleCreator.getSouthwestCornerOfLeftLayer().x; double minY = graticuleCreator.getSouthwestCornerOfLeftLayer().y; double maxX = minX + graticuleCreator.getLayerWidthInCells() * graticuleCreator.getCellSideLengthX(); double maxY = minY + graticuleCreator.getLayerHeightInCells() * graticuleCreator.getCellSideLengthY(); Envelope modelEnvelope = new Envelope(minX, maxX, minY, maxY); try { plugContext.getLayerViewPanel().getViewport().zoom(modelEnvelope); } catch (NoninvertibleTransformException e) { e.printStackTrace(); } } private Component getPanelButtonAllUser() { JPanel jpanelAll = new JPanel(); jcomboSelecAll = new JComboBox(arrayNombresUsuarios); JButton jButtonSelecAll = new JButton( I18N.get( MobileAssignCellsPlugin.PluginMobileExtracti18n, MobilePluginI18NResource.MobileAssignCellsPanel02_asignTodas)); jButtonSelecAll.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { int selectIndex = jcomboSelecAll.getSelectedIndex(); for (int i = 0; i < jComboList.size(); i++) { jComboList.get(i).setSelectedIndex(selectIndex); } } }); // añadimos al panel final jpanelAll.add(jButtonSelecAll); jpanelAll.add(jcomboSelecAll); return jpanelAll; } 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; } /** * Selecciona un elemento del combo en caso de existir * * @param jcombo * @param listaUsuariosPermisos2 * @param idUser */ private void seleccionaUsuarioComboCelda(JComboBox jcombo, String idUser) { Usuario u = null; // buscamos en la lista de usuarios con permisos reales sobre las capas extraídas for (int i = 0; i < listaUsuariosPermisos.size(); i++) { u = listaUsuariosPermisos.get(i); if (u.getId().equals(idUser)) { jcombo.setSelectedIndex(i + 1); } } } /** Called when the user presses Next on this panel */ public void exitingToRight() throws Exception { /** guardamos las celdas que tienen usuario asignado * */ JComboBox jCombo = null; String idCelda; String idSelectedUsuario; HashMap<String, String> celdasUsuarios = new HashMap<String, String>(); // lista de usuarios asignados a la celda que es índice int selectedIndex; for (int i = 0; i < jComboList.size(); i++) { jCombo = jComboList.get(i); idCelda = jCombo.getName(); selectedIndex = jCombo.getSelectedIndex(); idSelectedUsuario = ComboItemGraticuleListener.SIN_ASIGNAR; if (selectedIndex > 0) { idSelectedUsuario = listaUsuariosPermisos.get(selectedIndex - 1).getId(); } celdasUsuarios.put(idCelda, idSelectedUsuario); } // añadimos al clipboard el map generado blackboard.put(MOBILE_USERS_GRATICULES, celdasUsuarios); } /** * Tip: Delegate to an InputChangedFirer. * * @param listener a party to notify when the input changes (usually the WizardDialog, which needs * to know when to update the enabled state of the buttons. */ public void add(InputChangedListener listener) {} public void remove(InputChangedListener listener) {} public String getTitle() { return this.getName(); } public String getID() { return localId; } public String getInstructions() { return I18N.get( MobileAssignCellsPlugin.PluginMobileExtracti18n, MobilePluginI18NResource.MobileAssignCellsPanel02_asignUser); } public boolean isInputValid() { JComboBox jCombo = null; // si existe algún usuario seleccionado for (int i = 0; i < jComboList.size(); i++) { jCombo = jComboList.get(i); if (jCombo.getSelectedIndex() != 0) { return true; } } return false; } public void setWizardContext(WizardContext wd) { wizardContext = wd; } public void setNextID(String nextID) { this.nextID = nextID; } public String getNextID() { return nextID; } /* (non-Javadoc) * @see com.geopista.ui.wizard.WizardPanel#exiting() */ public void exiting() {} } // @jve:decl-index=0:visual-constraint="10,10"
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; }
public class MobileExtractPanel03 extends JPanel implements WizardPanel { private static Logger log = Logger.getLogger(MobileExtractPanel03.class); private static final String GEOMETRY_ATR = "geometry"; private Blackboard blackboard = Constants.APLICACION.getBlackboard(); private String localId = null; private WizardContext wizardContext; private PlugInContext context; private JButton jButtonGraticule; // capas desconectadas con permiso de modificación private JTree writeableAtributesTree; private NamedVector[] writeableRootNodes; public static final String MOBILE_WRITEABLE_LAYERS_ATRIB = "MOBILE_WRITEABLE_LAYERS_ATRIB"; private JScrollPane writeableLayerScrollPane = null; // capas desconectadas con permiso de lectura private JTree readableAtributesTree; private NamedVector[] readableRootNodes; public static final String MOBILE_READABLE_LAYERS_ATRIB = "MOBILE_READABLE_LAYERS_ATRIB"; private JScrollPane readableLayerScrollPane = null; public static final String MOBILE_PROJECT_NAME = "MOBILE_PROJECT_NAME"; /** @return null to turn the Next button into a Finish button */ private String nextID = null; private boolean bCuadriculaCreada; public MobileExtractPanel03(String id, String nextId, PlugInContext context) { this.nextID = nextId; this.localId = id; this.context = context; writeableAtributesTree = null; readableAtributesTree = null; bCuadriculaCreada = false; } public void enteredFromLeft(Map dataMap) { if (!Constants.APLICACION.isLogged()) { Constants.APLICACION.login(); } if (!Constants.APLICACION.isLogged()) { wizardContext.cancelWizard(); return; } writeableLayerScrollPane = null; readableLayerScrollPane = null; try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.removeAll(); this.setLayout(new GridBagLayout()); java.awt.GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 1; gridBagConstraints1.weightx = 1.0; gridBagConstraints1.weighty = 1.0; gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints1.ipadx = -21; gridBagConstraints1.ipady = 141; gridBagConstraints1.insets = new java.awt.Insets(5, 5, 5, 5); java.awt.GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.gridx = 0; gridBagConstraints2.gridy = 2; gridBagConstraints2.insets = new java.awt.Insets(5, 5, 5, 5); java.awt.GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); gridBagConstraints3.gridx = 0; gridBagConstraints3.gridy = 3; gridBagConstraints3.weightx = 1.0; gridBagConstraints3.weighty = 1.0; gridBagConstraints3.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints3.ipadx = -21; gridBagConstraints3.ipady = 141; gridBagConstraints3.insets = new java.awt.Insets(5, 5, 5, 5); java.awt.GridBagConstraints gridBagConstraints4 = new GridBagConstraints(); gridBagConstraints4.gridx = 0; gridBagConstraints4.gridy = 0; String projectName = (String) blackboard.get(MOBILE_PROJECT_NAME); JLabel extractionProjectNameLabel = new JLabel(projectName); this.add(extractionProjectNameLabel, gridBagConstraints4); this.add(getWriteableLayerScrollPane(), gridBagConstraints1); this.add(getReadableLayerScrollPane(), gridBagConstraints3); this.add(getGraticuleButton(), gridBagConstraints2); } private JButton getGraticuleButton() { jButtonGraticule = new JButton( I18N.get( MobileExtractPlugin.PluginMobileExtracti18n, MobilePluginI18NResource.MobileExtractPanel03_crearCuadricula)); LayerManager layerManager = context.getLayerManager(); Layer graticuleLayer = layerManager.getLayer(GraticuleCreatorEngine.getGraticuleName()); // si ya existe una capa cuadrícula significa que se trata de un fichero importado previamente a // ejecutar el asistente if (graticuleLayer != null) { jButtonGraticule.setEnabled(false); if (bCuadriculaCreada == true) { // solo ejecutamos este código una vez return jButtonGraticule; } FeatureCollectionWrapper graticuleCollectionWrapper = graticuleLayer.getFeatureCollectionWrapper(); FeatureSchema featureSchema = graticuleCollectionWrapper.getFeatureSchema(); // cuadriculas visionadas IViewport viewport = (IViewport) context.getLayerViewPanel().getViewport(); Envelope viewEnvelope = viewport.getEnvelopeInModelCoordinates(); List<Feature> graticuleFeatures = graticuleCollectionWrapper.query(viewEnvelope); // ordenamos por distancia al origen las features List<SortedFeature> sortedGraticuleFeatures = new ArrayList<SortedFeature>(); Feature feature = null; SortedFeature sortFeat = null; for (Iterator iterator = graticuleFeatures.iterator(); iterator.hasNext(); ) { feature = (Feature) iterator.next(); sortFeat = new SortedFeature(feature); sortedGraticuleFeatures.add(sortFeat); } Collections.sort(sortedGraticuleFeatures); // borramos el resto de cuadrículas graticuleCollectionWrapper.clear(); graticuleCollectionWrapper.addAll(graticuleFeatures); Envelope newWrapperEnvelope = graticuleCollectionWrapper.getEnvelope(); // zoom al envelope actual try { viewport.zoom(newWrapperEnvelope); } catch (NoninvertibleTransformException e) { log.warn("No se ha podido alcanzar el zoom " + newWrapperEnvelope); } // ajustamos la ventana al envelope de la cuadrícula resizeViewToEnvelope(context, newWrapperEnvelope, viewport); // guardamos las propiedades gráficas de la extracción Envelope featEnvelope = sortedGraticuleFeatures.get(0).getFeature().getGeometry().getEnvelopeInternal(); Double featWidth = featEnvelope.getWidth(); Double featHeight = featEnvelope.getHeight(); Double minX = newWrapperEnvelope.getMinX(); Double minY = newWrapperEnvelope.getMinY(); Coordinate coordCorner = new Coordinate(minX, minY); blackboard.put(GraticuleCreatorPlugIn.SOUTHWEST_CORNER_OF_LEFT_LAYER, coordCorner); blackboard.put(GraticuleCreatorPlugIn.CELL_SIDE_LENGTH_X, featWidth); blackboard.put(GraticuleCreatorPlugIn.CELL_SIDE_LENGTH_Y, featHeight); Integer numCeldasAncho = (int) (newWrapperEnvelope.getWidth() / featWidth); Integer numCeldasAlto = (int) (newWrapperEnvelope.getHeight() / featHeight); blackboard.put(GraticuleCreatorPlugIn.LAYER_WIDTH_IN_CELLS, numCeldasAncho); blackboard.put(GraticuleCreatorPlugIn.LAYER_HEIGHT_IN_CELLS, numCeldasAlto); // creamos celdas para los espacios en blanco if (sortedGraticuleFeatures.size() < numCeldasAncho * numCeldasAlto) { Double curMinX = minX; Double curMinY = minY; Double fMinX = 0.0; GeometryFactory geoFact = new GeometryFactory(); Feature newFeature = null; for (int i = 0; i < sortedGraticuleFeatures.size(); i++) { sortFeat = sortedGraticuleFeatures.get(i); feature = sortFeat.getFeature(); fMinX = feature.getGeometry().getEnvelopeInternal().getMinX(); if (curMinX.doubleValue() != fMinX.doubleValue()) { // creamos la feature newFeature = (Feature) feature.clone(); Coordinate[] coordArray = { new Coordinate(curMinX, curMinY), new Coordinate(curMinX + featWidth, curMinY), new Coordinate(curMinX + featWidth, curMinY + featHeight), new Coordinate(curMinX, curMinY + featHeight), new Coordinate(curMinX, curMinY) }; newFeature.setGeometry( geoFact.createPolygon(geoFact.createLinearRing(coordArray), null)); sortedGraticuleFeatures.add(i, new SortedFeature(newFeature)); graticuleCollectionWrapper.add(newFeature); } // para lo último else if ((i == sortedGraticuleFeatures.size() - 1) && ((minX + (featWidth * numCeldasAncho)) != (fMinX + featWidth))) { curMinX = fMinX + featWidth; newFeature = (Feature) feature.clone(); Coordinate[] coordArray = { new Coordinate(curMinX, curMinY), new Coordinate(curMinX + featWidth, curMinY), new Coordinate(curMinX + featWidth, curMinY + featHeight), new Coordinate(curMinX, curMinY + featHeight), new Coordinate(curMinX, curMinY) }; newFeature.setGeometry( geoFact.createPolygon(geoFact.createLinearRing(coordArray), null)); sortedGraticuleFeatures.add( sortedGraticuleFeatures.size(), new SortedFeature(newFeature)); graticuleCollectionWrapper.add(newFeature); continue; } if (((i + 1) % numCeldasAncho) != 0) { curMinX = curMinX + featWidth; } else { // ultima celda de cada fila curMinX = minX; curMinY += featHeight; } } } // añadimos el atributo cellid featureSchema.addAttribute(GraticuleCreatorEngine.ATR_CELL_ID, AttributeType.INTEGER); int k = 1; Object[] featAttribs = null; Object[] newFeatAttribs = null; for (Iterator iterator = sortedGraticuleFeatures.iterator(); iterator.hasNext(); k++) { feature = ((SortedFeature) iterator.next()).getFeature(); featAttribs = feature.getAttributes(); newFeatAttribs = new Object[featAttribs.length + 1]; for (int i = 0; i < featAttribs.length; i++) { newFeatAttribs[i] = featAttribs[i]; } newFeatAttribs[newFeatAttribs.length - 1] = k; feature.setAttributes(newFeatAttribs); } // pintamos el atributo en la capa LabelStyle labelStyle = graticuleLayer.getLabelStyle(); labelStyle.setColor(Color.RED); labelStyle.setHeight(labelStyle.getHeight() * 4); labelStyle.setAttribute(GraticuleCreatorEngine.ATR_CELL_ID); labelStyle.setEnabled(true); // evitamos que se modifiquen las cuadrículas graticuleLayer.setEditable(false); graticuleLayer.fireAppearanceChanged(); bCuadriculaCreada = true; } // llamada al graticulePlugin else { jButtonGraticule.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { GraticuleCreatorPlugIn graticulePlugin = new GraticuleCreatorPlugIn(); try { graticulePlugin.execute(context); } catch (Exception e1) { e1.printStackTrace(); } wizardContext.inputChanged(); // indicamos que ya se puede habilitar el boton } }); } return jButtonGraticule; } /** * Ajusta el tamaño de la ventana al envelope pasado como parámetro * * @param ctx * @param newWrapperEnvelope * @param viewport */ public static void resizeViewToEnvelope( PlugInContext ctx, Envelope newWrapperEnvelope, IViewport viewport) { // ajustamos las proporciones de la ventana a las de la feature JInternalFrame activeInternalFrame = ctx.getActiveInternalFrame(); Dimension dimView = ((Dimension) ctx.getLayerViewPanel()).getSize(); Double widthView = dimView.getWidth(); Double heightView = dimView.getHeight(); int widthDiff = (int) (activeInternalFrame.getWidth() - widthView); int heightDiff = (int) (activeInternalFrame.getHeight() - heightView); Integer newWidth = (int) ((newWrapperEnvelope.getWidth() / viewport.getEnvelopeInModelCoordinates().getWidth()) * widthView); Integer newHeight = (int) ((newWrapperEnvelope.getHeight() / viewport.getEnvelopeInModelCoordinates().getHeight()) * heightView); Dimension newDimensionView = new Dimension(newWidth + widthDiff, newHeight + heightDiff); activeInternalFrame.setSize(newDimensionView); // zoom al envelope actual try { viewport.zoom(newWrapperEnvelope); } catch (NoninvertibleTransformException e) { log.warn("No se ha podido alcanzar el zoom " + newWrapperEnvelope); } } /** * This method initializes availableLayerScrollPane * * @return javax.swing.JScrollPane */ private JScrollPane getWriteableLayerScrollPane() { if (writeableLayerScrollPane == null) { writeableLayerScrollPane = new JScrollPane(); writeableAtributesTree = getWriteableLayerTree(); writeableLayerScrollPane.setViewportView(writeableAtributesTree); writeableLayerScrollPane.setHorizontalScrollBarPolicy( javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); } return writeableLayerScrollPane; } /** * Retorna un árbol con las capas seleccionadas y sus atributos * * @return javax.swing.JList */ private JTree getWriteableLayerTree() { ArrayList<GeopistaLayer> extractLayers = (ArrayList<GeopistaLayer>) blackboard.get(MobileExtractPanel01.MOBILE_WRITEABLE_LAYERS); writeableRootNodes = getRootLayerNodes(extractLayers); Vector rootVector = new NamedVector( I18N.get( MobileExtractPlugin.PluginMobileExtracti18n, MobilePluginI18NResource.MobileExtractPanel03_capasEdit), writeableRootNodes); JTree tree = new JTree(rootVector); tree.setFont(new Font(tree.getFont().getName(), Font.BOLD, tree.getFont().getSize())); CheckBoxNodeRenderer renderer = new CheckBoxNodeRenderer(Color.BLUE); tree.setCellRenderer(renderer); tree.setCellEditor(new CheckBoxNodeEditor(tree)); tree.setEditable(true); // DefaultMutableTreeNode root = new DefaultMutableTreeNode("Capas"); // JTree tree = new JTree(root); // DefaultTreeModel model = (DefaultTreeModel) tree.getModel(); // DefaultMutableTreeNode chosen = null; // if(extractLayers!=null){ // for (int i = 0; i < extractLayers.size(); i++) { // geopistaLayer = extractLayers.get(i); // chosen = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); // if (chosen == null){ // chosen = root; // } // model.insertNodeInto(getTreeNodeFromLayer(geopistaLayer), chosen, 0); // } // } return tree; } /** * This method initializes availableLayerScrollPane * * @return javax.swing.JScrollPane */ private JScrollPane getReadableLayerScrollPane() { if (readableLayerScrollPane == null) { readableLayerScrollPane = new JScrollPane(); readableAtributesTree = getReadableLayerTree(); readableLayerScrollPane.setViewportView(readableAtributesTree); readableLayerScrollPane.setHorizontalScrollBarPolicy( javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); } return readableLayerScrollPane; } /** * Retorna un árbol con las capas seleccionadas y sus atributos * * @return javax.swing.JList */ private JTree getReadableLayerTree() { ArrayList<GeopistaLayer> extractLayers = (ArrayList<GeopistaLayer>) blackboard.get(MobileExtractPanel01.MOBILE_READABLE_LAYERS); readableRootNodes = getRootLayerNodes(extractLayers); Vector rootVector = new NamedVector( I18N.get( MobileExtractPlugin.PluginMobileExtracti18n, MobilePluginI18NResource.MobileExtractPanel03_capasLect), readableRootNodes); JTree tree = new JTree(rootVector); // tree.setFont(new Font(tree.getFont().getName(), Font.BOLD, tree.getFont().getSize())); CheckBoxNodeRenderer renderer = new CheckBoxNodeRenderer(Color.RED); tree.setCellRenderer(renderer); tree.setCellEditor(new CheckBoxNodeEditor(tree)); tree.setEditable(true); return tree; } /** * Añade todos los atributos de las capas seleccionadas * * @param extractLayers * @return */ private NamedVector[] getRootLayerNodes(ArrayList<GeopistaLayer> extractLayers) { NamedVector[] returnVector = null; if (extractLayers != null) { GeopistaLayer geopistaLayer = null; String layerSystemId; EIELFilesUtils eielFilesUtils; String layerName; returnVector = new NamedVector[extractLayers.size()]; // capas for (int i = 0; i < extractLayers.size(); i++) { geopistaLayer = extractLayers.get(i); layerSystemId = geopistaLayer.getSystemId(); eielFilesUtils = new EIELFilesUtils(layerSystemId); layerName = geopistaLayer.getName(); // buscamos el identificador de cada capa GeopistaSchema featureGeoSchema = (GeopistaSchema) geopistaLayer.getFeatureCollectionWrapper().getFeatureSchema(); // atributos NamedVector namedVector = new NamedVector(layerName); Column columnByAttribute = null; String colName = null; for (int j = 0; j < featureGeoSchema.getAttributeCount(); j++) { columnByAttribute = featureGeoSchema.getColumnByAttribute(j); colName = columnByAttribute.getName(); if (colName.toLowerCase().equals(GEOMETRY_ATR)) { // no lo mostramos continue; } // CAMBIAR: COMPROBAR SI SE DEBE SELECCIONAR id SI ES TIPO EIEL else if (colName.toLowerCase().equals(Constants.FIELD_ID)) { // lo ponemos al principio namedVector.add(0, new CheckBoxNode(featureGeoSchema.getAttributeName(j), true, false)); } else if (colName.toLowerCase().equals(Constants.FIELD_ID_MUNICIPIO)) { namedVector.add(1, new CheckBoxNode(featureGeoSchema.getAttributeName(j), true, false)); } // caso especial para licencias // la referencia castastral será el atributo clave para localizar la licencia else if (colName.toLowerCase().contains(Constants.CLAVE_METAINFO) && Utils.isInArray(Constants.TIPOS_LICENCIAS, layerSystemId)) { namedVector.add(new CheckBoxNode(featureGeoSchema.getAttributeName(j), true, false)); } // caso especial para inventario de patrimonio else if (colName.toLowerCase().equals(Constants.NUM_BIENES_ID) && Utils.isInArray(Constants.TIPOS_INVENTARIO, layerSystemId)) { namedVector.add(new CheckBoxNode(featureGeoSchema.getAttributeName(j), true, false)); } // caso especial para EIEL else if (Utils.isInArray(Constants.TIPOS_EIEL, layerSystemId)) { if (isPkFieldEIEL(eielFilesUtils, layerSystemId, colName)) namedVector.add(new CheckBoxNode(featureGeoSchema.getAttributeName(j), true, false)); else namedVector.add(new CheckBoxNode(featureGeoSchema.getAttributeName(j), false, true)); } else { // simplemente lo añadimos // if(!(licUtils.isInArray(Constants.TIPOS_LICENCIAS, layerSystemId) || // licUtils.isInArray(Constants.TIPOS_INVENTARIO, layerSystemId))){ if (!Utils.isInArray(Constants.TIPOS_LICENCIAS, layerSystemId)) { namedVector.add(new CheckBoxNode(featureGeoSchema.getAttributeName(j), false, true)); } } } returnVector[i] = namedVector; } } return returnVector; } private boolean isPkFieldEIEL( EIELFilesUtils eielFilesUtils, String layerSystemId, String colName) { Iterator it = eielFilesUtils.getEIELLayerBean(layerSystemId).getRelacionFields().iterator(); while (it.hasNext()) { LCGCampoCapaTablaEIEL lcgCampoCapa = (LCGCampoCapaTablaEIEL) it.next(); if (lcgCampoCapa.getCampoBD().equals(colName.toLowerCase())) { return true; } } return false; } // /** // * Obtiene un nodo del árbol compuesto por el nombre de la capa y sus atributos // * @param layer // * @return // */ // private DefaultMutableTreeNode getTreeNodeFromLayer(GeopistaLayer layer) { // DefaultMutableTreeNode r = new DefaultMutableTreeNode(layer.getName()); // FeatureSchema featureSchema = layer.getFeatureCollectionWrapper().getFeatureSchema(); // // for (int i = 1; i < featureSchema.getAttributeCount(); i++){ // r.add((MutableTreeNode) new CheckBoxNode(featureSchema.getAttributeName(i), false)); // } // // return r; // } /** Called when the user presses Next on this panel */ public void exitingToRight() throws Exception { // Recorremos el árbol y guardamos una lista con las capas y sus atributos seleccionados Map<String, List<String>> tablaCapasAtributosEscritura = new HashMap<String, List<String>>(); if (writeableRootNodes.length > 0) { tablaCapasAtributosEscritura = getLayersAtributesList(writeableAtributesTree); } // guardamos los atributos seleccionados de escritura blackboard.put(MOBILE_WRITEABLE_LAYERS_ATRIB, tablaCapasAtributosEscritura); Map<String, List<String>> tablaCapasAtributosLectura = new HashMap<String, List<String>>(); if (readableRootNodes.length > 0) { tablaCapasAtributosLectura = getLayersAtributesList(readableAtributesTree); } // guardamos los atributos seleccionados de escritura blackboard.put(MOBILE_READABLE_LAYERS_ATRIB, tablaCapasAtributosLectura); } /** * Obtiene los nodos seleccionados de un jtree creando una hash de Capas/Atributos * * @param jtreeAtributes * @return */ private Map<String, List<String>> getLayersAtributesList(JTree jtreeAtributes) { Map<String, List<String>> tablaCapasAtributos = new HashMap<String, List<String>>(); List<String> listaAtr = null; String nombreCapa = null; String nombreAtributo = null; DefaultTreeModel model = (DefaultTreeModel) jtreeAtributes.getModel(); DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); DefaultMutableTreeNode chosen = (DefaultMutableTreeNode) root.getFirstChild(); DefaultMutableTreeNode leaf = null; CheckBoxNode checkNode = null; for (int i = 0; i < root.getChildCount(); i++) { nombreCapa = chosen.toString(); leaf = chosen.getFirstLeaf(); for (int j = 0; j < chosen.getLeafCount(); j++) { checkNode = (CheckBoxNode) leaf.getUserObject(); nombreAtributo = checkNode.getText(); // testeamos si el atributo está seleccionado if (checkNode.isSelected()) { if (tablaCapasAtributos.containsKey(nombreCapa)) { listaAtr = tablaCapasAtributos.get(nombreCapa); } else { listaAtr = new ArrayList<String>(); } listaAtr.add(nombreAtributo); tablaCapasAtributos.put(nombreCapa, listaAtr); } leaf = leaf.getNextLeaf(); } // si no hay ningun atributo seleccionado guardamos unicamente la capa if (!tablaCapasAtributos.containsKey(nombreCapa)) { tablaCapasAtributos.put(nombreCapa, null); } chosen = chosen.getNextSibling(); } return tablaCapasAtributos; } /** * Tip: Delegate to an InputChangedFirer. * * @param listener a party to notify when the input changes (usually the WizardDialog, which needs * to know when to update the enabled state of the buttons. */ public void add(InputChangedListener listener) {} public void remove(InputChangedListener listener) {} public String getTitle() { return this.getName(); } public String getID() { return localId; } public String getInstructions() { return I18N.get( MobileExtractPlugin.PluginMobileExtracti18n, MobilePluginI18NResource.MobileExtractPanel03_selecAtrib); } public boolean isInputValid() { LayerManager layerManager = context.getLayerManager(); Layer graticuleLayer = layerManager.getLayer(GraticuleCreatorEngine.getGraticuleName()); if (graticuleLayer == null) { return false; } return true; } public void setWizardContext(WizardContext wd) { wizardContext = wd; } public void setNextID(String nextID) { this.nextID = nextID; } public String getNextID() { return nextID; } /* (non-Javadoc) * @see com.geopista.ui.wizard.WizardPanel#exiting() */ public void exiting() {} } // @jve:decl-index=0:visual-constraint="10,10"
public class MobileModifyPlugin extends GeopistaAbstractSaveMapPlugIn { private static final Log logger = LogFactory.getLog(MobileModifyPlugin.class); private Blackboard blackboard = Constants.APLICACION.getBlackboard(); public static final String PluginMobileExtracti18n = "PluginMobileExtracti18n"; /** Inicialización del plugin para cargarlo desde el fichero workbench.properties */ public void initialize(PlugInContext context) throws Exception { // para internacionalización Locale currentLocale = I18N.getLocaleAsObject(); ResourceBundle bundle = ResourceBundle.getBundle( "com.geopista.ui.plugin.mobile.language.PluginMobileExtracti18n", currentLocale); I18N.plugInsResourceBundle.put(PluginMobileExtracti18n, bundle); FeatureInstaller featureInstaller = new FeatureInstaller(context.getWorkbenchContext()); EnableCheckFactory checkFactory = context.getCheckFactory(); featureInstaller.addMainMenuItem( this, new String[] {"Tools", MobilePluginI18NResource.GEOPISTAConfiguration_proyectMovil}, I18N.get(PluginMobileExtracti18n, MobilePluginI18NResource.MobileModifyPlugin_text), false, null, new MultiEnableCheck() .add(checkFactory.createWindowWithLayerNamePanelMustBeActiveCheck()) .add(checkFactory.createAdminUserCheck())); ((WorkbenchGuiComponent) context.getWorkbenchContext().getIWorkbench().getGuiComponent()) .getToolBar("Movilidad") .addPlugIn( this.getIcon(), this, createEnableCheck(context.getWorkbenchContext()), context.getWorkbenchContext()); } public String getName() { return I18N.get(PluginMobileExtracti18n, MobilePluginI18NResource.MobileModifyPlugin_text); } public ImageIcon getIcon() { return IconLoader.icon("/com/geopista/ui/images/movilidad_borrar.png"); } public static MultiEnableCheck createEnableCheck(WorkbenchContext workbenchContext) { EnableCheckFactory checkFactory = new EnableCheckFactory(workbenchContext); return new MultiEnableCheck() .add(checkFactory.createWindowWithLayerNamePanelMustBeActiveCheck()); } public boolean execute(PlugInContext context) throws Exception { reportNothingToUndoYet(context); // limpiamos lo que haya podido quedar de ejecuciones anteriores emptyBlackboard(); WizardDialog d = new WizardDialog( GeopistaUtil.getFrame(context.getWorkbenchGuiComponent()), Constants.APLICACION.getI18nString("ExtractDialogGestionar"), context.getErrorHandler()); d.init( new WizardPanel[] { new MobileModifyPanel01("MobileModifyPanel01", null, context), }); d.setSize(520, 650); d.setLocation(10, 20); d.setVisible(true); if (!d.wasFinishPressed()) { LayerManager layerManager = context.getLayerManager(); if (layerManager != null) { Layer graticuleLayer = layerManager.getLayer(GraticuleCreatorEngine.getGraticuleName()); // si existe una cuadrícula la borramos if (graticuleLayer != null) { layerManager.remove(graticuleLayer); } } return false; } return true; } /** Borra lo que haya utilizado del blackboard en sus anteriores ejecuciones */ private void emptyBlackboard() { blackboard.remove(MobileModifyPanel01.SELECTED_EXTRACT_PROJECT); } /* * 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 void httpDeleteProject(String url, ExtractionProject eProject) throws Exception { PostMethod method = null; try { HttpClient client = new HttpClient(); client.getParams().setParameter("http.connection.timeout", new Integer(8000)); method = new PostMethod(url); method.addParameter("PROJECT_ID", eProject.getIdProyecto()); method.addParameter("PROJECT_NAME", eProject.getNombreProyecto()); int statusCode1 = client.executeMethod(method); logger.info("statusLine>>> " + method.getStatusLine() + " || statusCode>>> " + statusCode1); } catch (Exception e) { logger.error("No se ha podido eliminar el proyecto. " + e, e); throw e; } finally { if (method != null) method.releaseConnection(); } } }