Revision 41004 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/util/BaseOpenErrorHandler.java

View differences:

BaseOpenErrorHandler.java
24 24
package org.gvsig.app.util;
25 25

  
26 26
import java.io.File;
27
import java.lang.reflect.InvocationTargetException;
27
import java.io.FilenameFilter;
28 28

  
29 29
import javax.swing.JOptionPane;
30 30

  
31
import org.apache.commons.io.FilenameUtils;
31 32
import org.gvsig.fmap.dal.DataParameters;
32 33
import org.gvsig.fmap.dal.OpenErrorHandler;
33
import org.gvsig.fmap.dal.exception.InitializeException;
34
import org.gvsig.fmap.dal.exception.OpenException;
35 34
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
36 35
import org.gvsig.fmap.dal.serverexplorer.filesystem.swing.FilesystemExplorerWizardPanel;
37
import org.gvsig.fmap.dal.store.shp.SHPStoreParameters;
38
import org.gvsig.fmap.dal.store.shp.utils.SHP;
39 36
import org.gvsig.gui.beans.swing.JFileChooser;
40 37
import org.gvsig.i18n.Messages;
41 38
import org.gvsig.utils.SimpleFileFilter;
......
44 41
	
45 42
	
46 43
	private DataParameters parameters;
47
	private Exception exception;
44
//	private Exception exception;
48 45

  
49 46
	public BaseOpenErrorHandler() {
50
		exception=null;
47
//		exception=null;
51 48
		parameters=null;
52 49
		
53 50
	}
54 51

  
55 52
	public boolean canRetryOpen(Exception e, DataParameters parameters) {
56
		this.exception=e;
53
//		this.exception=e;
57 54
		this.parameters=parameters;
58
		Throwable cause = null;
55
//		Throwable cause = null;
59 56
		boolean retry = false;
60 57

  
61 58
		/*if (this.exception instanceof InvocationTargetException){
......
79 76
						}
80 77
					}
81 78

  
82
					if (this.parameters instanceof SHPStoreParameters) {
83
						SHPStoreParameters shpStoreParameters = (SHPStoreParameters)this.parameters;
84
						File searchedDBFFile = shpStoreParameters.getDBFFile();
79
					if (this.parameters.getDynClass().getName().equalsIgnoreCase("SHPStoreParameters") ) {
80
						//SHPStoreParameters shpStoreParameters = (SHPStoreParameters)this.parameters;
81
//						File searchedDBFFile = shpStoreParameters.getDBFFile();
82
						File searchedDBFFile =  (File) this.parameters.getDynValue("dbfFile");
85 83
						if (searchedDBFFile!=null && !searchedDBFFile.exists()) {
86 84
							File possibleDbfFile = null;
87 85
							if (file != null){
88
								possibleDbfFile = SHP.getDbfFile(file);
86
//								possibleDbfFile = SHP.getDbfFile(file);
87
								possibleDbfFile = findFile(file, "dbf");
89 88
							}
90 89
							if (possibleDbfFile != null && possibleDbfFile.exists()) {
91
								shpStoreParameters.setDBFFile(possibleDbfFile);
90
//								shpStoreParameters.setDBFFile(possibleDbfFile);
91
								this.parameters.setDynValue("dbfFile", possibleDbfFile);
92 92
								retry = true;
93 93
							} else {
94 94
								File dbfFile = chooseAlternateFile(searchedDBFFile);
95 95
								if (dbfFile != null){
96
									shpStoreParameters.setDBFFile(dbfFile);
96
//									shpStoreParameters.setDBFFile(dbfFile);
97
									this.parameters.setDynValue("dbfFile", dbfFile);
97 98
									retry = true;
98 99
								} else {
99 100
									return false;
100 101
								}
101 102
							}
102 103
						}
103
						File searchedSHXFile = shpStoreParameters.getSHXFile();
104
//						File searchedSHXFile = shpStoreParameters.getSHXFile();
105
						File searchedSHXFile = (File) this.parameters.getDynValue("shxfile");;
104 106
						if (searchedDBFFile!=null && !searchedSHXFile.exists()) {
105 107
							File possibleShxFile = null;
106 108
							if (file != null){
107
								possibleShxFile = SHP.getShxFile(file);
109
//								possibleShxFile = SHP.getShxFile(file);
110
								possibleShxFile = findFile(file, "shx");
108 111
							}
109 112
							if (possibleShxFile != null && possibleShxFile.exists()) {
110
								shpStoreParameters.setSHXFile(possibleShxFile);
113
//								shpStoreParameters.setSHXFile(possibleShxFile);
114
								this.parameters.setDynValue("shxfile", possibleShxFile);
111 115
								retry = true;
112 116
							} else {
113 117
								File shxFile = chooseAlternateFile(searchedSHXFile);
114 118
								if (shxFile != null) {
115
									shpStoreParameters.setSHXFile(shxFile);
119
//									shpStoreParameters.setSHXFile(shxFile);
120
									this.parameters.setDynValue("shxfile", shxFile);
116 121
									retry = true;
117 122
								} else {
118 123
									return false;
......
160 165
			}
161 166
		return null;
162 167
	}
168
	
169
	private File findFile(File file, String extension) {
170
		File[] files = file.getParentFile().listFiles(new ExtensionFilenameFilter(file, extension));
171
		if( files == null || files.length<1 ) {
172
			return new File(file.getParentFile(),FilenameUtils.getBaseName(file.getName())+"."+extension);
173
		}
174
		return files[0];
175
	}
176
	
177
	private class ExtensionFilenameFilter implements FilenameFilter {
178
		private String extension;
179
		private String baseName;
180
		ExtensionFilenameFilter(File f, String extension) {
181
			this.extension = extension;
182
			this.baseName = FilenameUtils.getBaseName(f.getName());
183
		}
184
		public boolean accept(File arg0, String filename) {
185
			if( FilenameUtils.getBaseName(filename).equals(baseName) ) {
186
				if( FilenameUtils.getExtension(filename).equalsIgnoreCase(extension) ) {
187
					return true;
188
				}
189
			}
190
			return false;
191
		}
192
	}
193

  
163 194
}
164 195

  
165 196

  

Also available in: Unified diff