Revision 41902 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.installer/org.gvsig.installer.lib/org.gvsig.installer.lib.impl/src/main/java/org/gvsig/installer/lib/impl/DefaultInstallerManager.java
DefaultInstallerManager.java | ||
---|---|---|
41 | 41 |
import java.util.List; |
42 | 42 |
import java.util.Map; |
43 | 43 |
import java.util.Set; |
44 |
import org.apache.commons.io.FileUtils; |
|
44 | 45 |
import org.apache.commons.lang3.StringUtils; |
45 | 46 |
|
46 | 47 |
import org.gvsig.installer.lib.api.DependenciesCalculator; |
... | ... | |
67 | 68 |
import org.gvsig.tools.service.AbstractManager; |
68 | 69 |
import org.gvsig.tools.service.Service; |
69 | 70 |
import org.gvsig.tools.service.ServiceException; |
71 |
import org.slf4j.Logger; |
|
72 |
import org.slf4j.LoggerFactory; |
|
70 | 73 |
|
71 | 74 |
/** |
72 | 75 |
* @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodrá</a> |
... | ... | |
74 | 77 |
public class DefaultInstallerManager extends AbstractManager implements |
75 | 78 |
InstallerManager { |
76 | 79 |
|
80 |
private static Logger logger = LoggerFactory.getLogger(DefaultInstallerManager.class); |
|
81 |
|
|
77 | 82 |
private static class LocalRepositoryLocation { |
78 | 83 |
|
79 | 84 |
private File location; |
... | ... | |
482 | 487 |
return this.getDefaultLocalAddonRepository(packageType,ACCESS_READ); |
483 | 488 |
} |
484 | 489 |
|
490 |
private boolean canWrite(File f) { |
|
491 |
if( !f.canWrite() ) { |
|
492 |
return false; |
|
493 |
} |
|
494 |
// En MS Windows File.canWrite retorna true aunque luego no se pueden crear |
|
495 |
// escribir en esa carpeta, asi que probamos a crear una carpeta para |
|
496 |
// asegurarnos si se puede escribir realmente. |
|
497 |
File f2 = new File(f,"test.dir"); |
|
498 |
if( f2.mkdir() ) { |
|
499 |
f2.delete(); |
|
500 |
return true; |
|
501 |
} |
|
502 |
return false; |
|
503 |
} |
|
504 |
|
|
485 | 505 |
public File getDefaultLocalAddonRepository(String packageType, int access) { |
486 | 506 |
File f = this.defaultRepositoryLocation.get(packageType); |
487 | 507 |
switch(access) { |
488 | 508 |
case ACCESS_WRITE: |
489 |
if( f.canWrite() ) {
|
|
509 |
if( canWrite(f) ) {
|
|
490 | 510 |
return f; |
491 | 511 |
} |
492 | 512 |
break; |
... | ... | |
501 | 521 |
for( File repositoryLocation : repositoriesLocaltions ) { |
502 | 522 |
switch(access) { |
503 | 523 |
case ACCESS_WRITE: |
504 |
if( repositoryLocation.canWrite() ) {
|
|
524 |
if( canWrite(repositoryLocation) ) {
|
|
505 | 525 |
return repositoryLocation; |
506 | 526 |
} |
507 | 527 |
break; |
Also available in: Unified diff