From: <de...@us...> - 2013-09-09 22:20:45
|
Revision: 8496 http://sourceforge.net/p/fudaa/svn/8496 Author: deniger Date: 2013-09-09 22:20:42 +0000 (Mon, 09 Sep 2013) Log Message: ----------- maj librairie de graph Modified Paths: -------------- trunk/soft/fudaa-crue/pom.xml trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingScenarioVisuService.java trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/layout/NetworkBuilder.java trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/layout/NetworkGisPositionnerResult.java trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/save/VisuLoadingResult.java trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/service/ReportVisuPanelService.java Added Paths: ----------- trunk/soft/fudaa-crue/ui-planimetry/src/main/resources/org/fudaa/fudaa/crue/planimetry/layout/ trunk/soft/fudaa-crue/ui-planimetry/src/main/resources/org/fudaa/fudaa/crue/planimetry/layout/Bundle.properties Modified: trunk/soft/fudaa-crue/pom.xml =================================================================== --- trunk/soft/fudaa-crue/pom.xml 2013-09-09 06:48:43 UTC (rev 8495) +++ trunk/soft/fudaa-crue/pom.xml 2013-09-09 22:20:42 UTC (rev 8496) @@ -8,7 +8,7 @@ </parent> <groupId>org.fudaa.soft.fudaa-crue</groupId> <artifactId>fudaa-crue</artifactId> - <version>1.0RC3-SNAPSHOT</version> + <version>1.0RC4-SNAPSHOT</version> <name>Fudaa-Crue</name> <packaging>pom</packaging> <ciManagement> @@ -331,7 +331,8 @@ <dependency> <groupId>jgraphx</groupId> <artifactId>jgraphx</artifactId> - <version>1.10.0.5</version> + <!--<version>1.10.0.5</version>--> + <version>2.1.1.2</version> </dependency> </dependencies> </dependencyManagement> Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingScenarioVisuService.java =================================================================== --- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingScenarioVisuService.java 2013-09-09 06:48:43 UTC (rev 8495) +++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingScenarioVisuService.java 2013-09-09 22:20:42 UTC (rev 8496) @@ -7,6 +7,7 @@ import org.fudaa.dodico.crue.metier.etude.EMHProjet; import org.fudaa.fudaa.crue.common.helper.CtuluUIForNetbeans; import org.fudaa.fudaa.crue.common.helper.DialogHelper; +import org.fudaa.fudaa.crue.common.log.LogsDisplayer; import org.fudaa.fudaa.crue.common.services.ModellingScenarioService; import org.fudaa.fudaa.crue.modelling.emh.ModellingOpenEMHPlanimetryAdapter; import org.fudaa.fudaa.crue.modelling.loi.SimplificationSeuilsChooser; @@ -37,31 +38,31 @@ */ @ServiceProvider(service = ModellingScenarioVisuService.class) public class ModellingScenarioVisuService implements LookupListener, Lookup.Provider, AdditionalLayerSaveStateListener { - + protected InstanceContent dynamicContent = new InstanceContent(); protected Lookup lookup = new AbstractLookup(dynamicContent); ModellingScenarioService modellingScenarioService = Lookup.getDefault().lookup(ModellingScenarioService.class); ConfigurationManagerService configurationManagerService = Lookup.getDefault().lookup(ConfigurationManagerService.class); AdditionalLayersSaveServices additionalLayersSaveServices = Lookup.getDefault().lookup(AdditionalLayersSaveServices.class); private final Result<EMHScenario> resultat; - + public ModellingScenarioVisuService() { resultat = modellingScenarioService.getLookup().lookupResult( EMHScenario.class); resultat.addLookupListener(this); } - + public ModellingScenarioService getModellingScenarioService() { return modellingScenarioService; } - + @Override public void additionalLayerSavedBy(Object source, PlanimetryController controller) { if (getPlanimetryVisuPanel() != null && !AdditionalLayerSaveStateListener.FROM_MODELLING.equals(source)) { getPlanimetryVisuPanel().getPlanimetryController().reloadAdditionLayersFrom(controller); } } - + @Override public void resultChanged(LookupEvent ev) { //changement massif: on ne fait rien @@ -74,12 +75,12 @@ unloadScenario(); } } - + @Override public Lookup getLookup() { return lookup; } - + void load(final EMHScenario scenarioLoaded) { ContainerActivityVisibility activity = new ContainerActivityVisibility(); activity.initialize(scenarioLoaded); @@ -87,11 +88,11 @@ SwingWorker loader = new VisuPanelLoader(scenarioLoaded); loader.execute(); } - + public void activityChanged() { activityChanged(getContainerActivityVisibility()); } - + public void activityChanged(ContainerActivityVisibility visibility) { if (modellingScenarioService.isScenarioLoaded()) { ContainerActivityVisibility old = getContainerActivityVisibility(); @@ -105,7 +106,7 @@ planimetryVisuPanel.getPlanimetryController().setContainerActivityVisibility(visibility); } } - + public void unloadScenario() { PlanimetryVisuPanel old = getPlanimetryVisuPanel(); if (old != null) { @@ -117,7 +118,7 @@ dynamicContent.remove(containerActivityVisibility); } } - + private void loadScenario() { unloadScenario(); boolean dirOfConfigDefined = modellingScenarioService.getSelectedProjet().getInfos().isDirOfConfigDefined(); @@ -132,35 +133,35 @@ }); } } - + public PlanimetryVisuPanel getPlanimetryVisuPanel() { return lookup.lookup(PlanimetryVisuPanel.class); } - + public ContainerActivityVisibility getContainerActivityVisibility() { return lookup.lookup(ContainerActivityVisibility.class); } - + private class VisuPanelLoader extends SwingWorker<VisuLoadingResult, Object> { - + private final EMHScenario scenarioLoaded; final ProgressHandle ph = ProgressHandleFactory.createHandle(NbBundle.getMessage(ModellingScenarioVisuService.class, "gisDataLoad.Task.Name")); - + public VisuPanelLoader(EMHScenario scenarioLoaded) { this.scenarioLoaded = scenarioLoaded; } - + @Override protected VisuLoadingResult doInBackground() throws Exception { ph.start(); ph.switchToIndeterminate(); final EMHProjet selectedProjet = modellingScenarioService.getSelectedProjet(); final EMHScenario scenario = scenarioLoaded; - + return VisuLoadingResult.loadVisuConfig(selectedProjet, scenario); } - + @Override protected void done() { try { @@ -182,6 +183,10 @@ } dynamicContent.add(panel); additionalLayersSaveServices.removeListener(ModellingScenarioVisuService.this); + if (result.log != null && result.log.containsErrorOrSevereError()) { + LogsDisplayer.displayError(result.log, NbBundle.getMessage(ModellingScenarioVisuService.class, + "gisDataLoad.Task.Name")); + } } catch (Exception exception) { Exceptions.printStackTrace(exception); } finally { Modified: trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/layout/NetworkBuilder.java =================================================================== --- trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/layout/NetworkBuilder.java 2013-09-09 06:48:43 UTC (rev 8495) +++ trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/layout/NetworkBuilder.java 2013-09-09 22:20:42 UTC (rev 8496) @@ -18,6 +18,8 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.swing.SwingConstants; import org.fudaa.ctulu.CtuluTroveProcedure; import org.fudaa.ctulu.CtuluUI; @@ -119,7 +121,12 @@ int bigger = graphesBuilder.getBigger(); if (graphesBuilder.getNb() > 0) { DirectedWeightedMultigraph<Long, BrancheEdge> graph = graphesBuilder.getGraph(bigger); - buildGisData(graph, res, initX, initY, configuration); + Exception ex = buildGisData(graph, res, initX, initY, configuration); + if (ex != null) { + res.getError().addError(org.openide.util.NbBundle.getMessage(NetworkBuilder.class, "buildNetworkFail")); + Logger.getLogger(NetworkBuilder.class.getName()).log(Level.INFO, "Error while layout", ex); + } + int nb = graphesBuilder.getNb(); for (int i = 0; i < nb; i++) { if (i == bigger) { @@ -127,7 +134,12 @@ } Envelope envelopeInternal = res.edges.getEnvelopeInternal(); double xOffset = envelopeInternal.getMaxX() + configuration.getMinimalDistanceBeetweenParallelEdges(); - buildGisData(graphesBuilder.getGraph(i), res, xOffset, 0, configuration); + ex = buildGisData(graphesBuilder.getGraph(i), res, xOffset, 0, configuration); + if (ex != null) { + res.getError().addError(org.openide.util.NbBundle.getMessage(NetworkBuilder.class, "buildNetworkFail")); + Logger.getLogger(NetworkBuilder.class.getName()).log(Level.INFO, "Error while layout", ex); + } + } } //les @@ -278,10 +290,11 @@ return modified; } - private void buildGisData(DirectedWeightedMultigraph<Long, BrancheEdge> graph, NetworkGisPositionnerResult res, + private Exception buildGisData(DirectedWeightedMultigraph<Long, BrancheEdge> graph, NetworkGisPositionnerResult res, double globalXOffset, double globalYOffset, VisuConfiguration configuration) { //on construit un mxGraph pour lui faire faire le layout: + Exception exceptionCaught = null; mxGraph mxGraphe = new mxGraph(); NodeYFinder ys = new NodeYFinder(); TObjectDoubleHashMap<Long> findYs = ys.findYs(graph); @@ -314,8 +327,11 @@ layout.setIntraCellSpacing(configuration.getMinimalDistanceBetweenNode()); layout.setInterRankCellSpacing(configuration.getMinimalDistanceBetweenNode()); layout.setResizeParent(true); - layout.setLayoutFromSinks(true); - layout.execute(mxGraphe.getDefaultParent()); + try { + layout.execute(mxGraphe.getDefaultParent()); + } catch (Exception ex) { + exceptionCaught = ex; + } CtuluTroveProcedure.DoubleMaxValue procedure = new CtuluTroveProcedure.DoubleMaxValue(); @@ -335,23 +351,26 @@ Long sourceVertex = graph.getEdgeSource(brancheEdge); Long targetVertex = graph.getEdgeTarget(brancheEdge); final mxGeometry geometry = brancheCell.getGeometry(); - List<mxPoint> points = geometry.getPoints(); List<Coordinate> finalCoordinate = new ArrayList<Coordinate>(); final Coordinate amontRealCoordinate = node.get(sourceVertex).getCoordinate(); - final mxPoint sourcePoint = points.get(0); final Coordinate avalRealCoordinate = node.get(targetVertex).getCoordinate(); - final mxPoint targetPoint = points.get(points.size() - 1); - double yRatio = (avalRealCoordinate.y - amontRealCoordinate.y) / (targetPoint.getY() - sourcePoint.getY()); finalCoordinate.add(amontRealCoordinate); - for (int i = 1; i < points.size() - 1; i++) { - mxPoint pt = points.get(i); - double y = amontRealCoordinate.y + (pt.getY() - sourcePoint.getY()) * yRatio; - Coordinate c = new Coordinate(pt.getX(), y); - finalCoordinate.add(c); + List<mxPoint> points = geometry.getPoints(); + if (points != null) { + final mxPoint targetPoint = points.get(points.size() - 1); + final mxPoint sourcePoint = points.get(0); + double yRatio = (avalRealCoordinate.y - amontRealCoordinate.y) / (targetPoint.getY() - sourcePoint.getY()); + for (int i = 1; i < points.size() - 1; i++) { + mxPoint pt = points.get(i); + double y = amontRealCoordinate.y + (pt.getY() - sourcePoint.getY()) * yRatio; + Coordinate c = new Coordinate(pt.getX(), y); + finalCoordinate.add(c); + } } finalCoordinate.add(avalRealCoordinate); res.addEdge(finalCoordinate, (CatEMHBranche) res.idRegistry.getEmh(id)); } + return exceptionCaught; } private static class ConnectedGraphBuilder { Modified: trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/layout/NetworkGisPositionnerResult.java =================================================================== --- trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/layout/NetworkGisPositionnerResult.java 2013-09-09 06:48:43 UTC (rev 8495) +++ trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/layout/NetworkGisPositionnerResult.java 2013-09-09 22:20:42 UTC (rev 8496) @@ -10,6 +10,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.fudaa.ctulu.CtuluLog; import org.fudaa.ctulu.gis.GISAttributeModel; import org.fudaa.ctulu.gis.GISGeometryFactory; import org.fudaa.ctulu.gis.GISPoint; @@ -45,7 +46,12 @@ VisuConfiguration visuConfiguration; LayerVisibility layerVisibility; CrueConfigMetier ccm; + CtuluLog error = new CtuluLog(); + public CtuluLog getError() { + return error; + } + public NetworkGisPositionnerResult(PlanimetryGisModelContainer container, GISZoneCollectionPoint nodes, GISZoneCollectionLigneBrisee edges, GISZoneCollectionLigneBrisee casiers) { this.context = container; Modified: trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/save/VisuLoadingResult.java =================================================================== --- trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/save/VisuLoadingResult.java 2013-09-09 06:48:43 UTC (rev 8495) +++ trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/save/VisuLoadingResult.java 2013-09-09 22:20:42 UTC (rev 8496) @@ -5,6 +5,7 @@ import java.io.File; import java.util.List; +import org.fudaa.ctulu.CtuluLog; import org.fudaa.dodico.crue.config.ccm.CrueConfigMetier; import org.fudaa.dodico.crue.metier.emh.EMHScenario; import org.fudaa.dodico.crue.metier.etude.EMHProjet; @@ -39,20 +40,25 @@ NetworkBuilder builder = new NetworkBuilder(); final File dirOfConfig = selectedProjet.getInfos().getDirOfConfig(); NetworkGisPositionnerResult load = loader.load(dirOfConfig, scenario); + VisuLoadingResult result = new VisuLoadingResult(); if (load == null) { load = builder.buildNewGisData(scenario, visuConfiguration, crueConfigMetier, 0, 0); } + if (load == null) { + load = new NetworkGisPositionnerResult(scenario); + } load.setLayerVisibility(visibility); load.setVisuConfiguration(visuConfiguration); load.setCcm(crueConfigMetier); - VisuLoadingResult result = new VisuLoadingResult(); result.networkGisPositionnerResult = load; ConfigLoaderExtern.ResultExtern loadConfigEtudeExtern = ConfigLoaderExtern.loadConfigEtudeExtern(selectedProjet); if (loadConfigEtudeExtern != null) { result.additionnalLayer = loadConfigEtudeExtern.additionnalLayers; } + result.log = load.getError(); return result; } public NetworkGisPositionnerResult networkGisPositionnerResult; public List<PlanimetryAdditionalLayerContrat> additionnalLayer; + public CtuluLog log; } Copied: trunk/soft/fudaa-crue/ui-planimetry/src/main/resources/org/fudaa/fudaa/crue/planimetry/layout/Bundle.properties (from rev 8404, trunk/soft/fudaa-crue/ui-planimetry/src/main/resources/org/fudaa/fudaa/crue/planimetry/Bundle.properties) =================================================================== --- trunk/soft/fudaa-crue/ui-planimetry/src/main/resources/org/fudaa/fudaa/crue/planimetry/layout/Bundle.properties (rev 0) +++ trunk/soft/fudaa-crue/ui-planimetry/src/main/resources/org/fudaa/fudaa/crue/planimetry/layout/Bundle.properties 2013-09-09 22:20:42 UTC (rev 8496) @@ -0,0 +1 @@ +buildNetworkFail=Impossible de construire compl\u00e8tement le r\u00e9seau par d\u00e9faut Modified: trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/service/ReportVisuPanelService.java =================================================================== --- trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/service/ReportVisuPanelService.java 2013-09-09 06:48:43 UTC (rev 8495) +++ trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/service/ReportVisuPanelService.java 2013-09-09 22:20:42 UTC (rev 8496) @@ -9,6 +9,7 @@ import org.fudaa.ebli.calque.BCalqueLegende; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.fudaa.crue.common.helper.CtuluUIForNetbeans; +import org.fudaa.fudaa.crue.common.log.LogsDisplayer; import org.fudaa.fudaa.crue.options.services.ConfigurationManagerService; import org.fudaa.fudaa.crue.planimetry.PlanimetryVisuPanel; import org.fudaa.fudaa.crue.planimetry.controller.PlanimetryController; @@ -152,6 +153,10 @@ } dynamicContent.add(panel); additionalLayersSaveServices.addListener(ReportVisuPanelService.this); + if (result.log != null && result.log.containsErrorOrSevereError()) { + LogsDisplayer.displayError(result.log, NbBundle.getMessage(ReportVisuPanelService.class, + "gisDataLoad.Task.Name")); + } } catch (Exception exception) { Exceptions.printStackTrace(exception); } finally { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |