Revision 1431

View differences:

org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/installer/lib/api/PackageInfo.java
123 123
	 * @see OS
124 124
	 */
125 125
	public void setOperatingSystem(String operatingSystem);
126
        
127
        public String getOperatingSystemFamily();
126 128

  
129
        public String getOperatingSystemName();
130

  
131
        public String getOperatingSystemVersion();
132
        
133
        public void setOperatingSystemFamily(String operatingSystemFamily);
134

  
135
        public void setOperatingSystemName(String operatingSystemName);
136

  
137
        public void setOperatingSystemVersion(String operatingSystemVersion);
127 138
	/**
128 139
	 * Returns the supported hardware architecture.
129 140
	 * 
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/packageutils/PackageManager.java
139 139
	 */
140 140
	public String getOperatingSystem();
141 141

  
142
        public String getOperatingSystemFamily();
143
	public String getOperatingSystemName();
144
	public String getOperatingSystemVersion();
145
        
146

  
142 147
	/**
143 148
	 * Returns the Architecture code of the system
144 149
	 *
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/packageutils/PackageInfo.java
115 115
	 *            the supported operating system
116 116
	 * @see OS
117 117
	 */
118
        @Override
118 119
	public void setOperatingSystem(String operatingSystem);
120
        
121
        @Override
122
        public String getOperatingSystemFamily();
119 123

  
124
        @Override
125
        public String getOperatingSystemName();
126

  
127
        @Override
128
        public String getOperatingSystemVersion();
129
        
130
        @Override
131
        public void setOperatingSystemFamily(String operatingSystemFamily);
132

  
133
        @Override
134
        public void setOperatingSystemName(String operatingSystemName);
135

  
136
        @Override
137
        public void setOperatingSystemVersion(String operatingSystemVersion);
138

  
120 139
	/**
121 140
	 * Returns the supported hardware architecture.
122 141
	 * 
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/packageutils/impl/DefaultPackageManager.java
24 24
package org.gvsig.tools.packageutils.impl;
25 25

  
26 26
import java.io.File;
27
import java.io.FileInputStream;
27 28
import java.io.IOException;
28 29
import java.io.InputStream;
29 30
import java.io.OutputStream;
31
import java.util.Properties;
32
import org.apache.commons.io.IOUtils;
33
import org.apache.commons.lang3.StringUtils;
30 34

  
31 35
import org.gvsig.tools.exception.BaseException;
32 36
import org.gvsig.tools.packageutils.Dependencies;
......
36 40
import org.gvsig.tools.packageutils.Version;
37 41

  
38 42
public class DefaultPackageManager implements PackageManager {
43
    private String operatingSystemName;
44
    private String operatingSystemFamily;
45
    private String operatingSystemVersion;
39 46

  
40 47
        @Override
41 48
	public Version createVersion() {
......
94 101
		return new DefaultDependencies();
95 102
	}
96 103
	
104
        private void loadOperatingSystemInfo() {
105
            String osname = System.getProperty("os.name");
106
            String osversion = System.getProperty("os.version");
107
            if (osname.toLowerCase().startsWith("linux")) {
108
                this.operatingSystemFamily = OS.LINUX;
109
                FileInputStream fis = null;
110
                try {
111
                    Properties p = new Properties();
112
                    fis = new FileInputStream("/etc/os-release");
113
                    p.load(fis);
114
                    this.operatingSystemName = p.getProperty("ID", null);
115
                    this.operatingSystemVersion = p.getProperty("VERSION_ID", null);
116
                    
117
                    this.operatingSystemName = StringUtils.removeEnd(this.operatingSystemName,"\"");
118
                    this.operatingSystemName = StringUtils.removeStart(this.operatingSystemName,"\"");
119
                    this.operatingSystemName = StringUtils.trimToNull(this.operatingSystemName);
120
                    this.operatingSystemVersion = StringUtils.removeEnd(this.operatingSystemVersion,"\"");
121
                    this.operatingSystemVersion = StringUtils.removeStart(this.operatingSystemVersion,"\"");
122
                    this.operatingSystemVersion = StringUtils.trimToNull(this.operatingSystemVersion);
123
                } catch(Exception ex) {
124

  
125
                } finally {
126
                    IOUtils.closeQuietly(fis);
127
                }
128
                
129
            } else if (osname.toLowerCase().startsWith("window")) {
130
                this.operatingSystemFamily = OS.WINDOWS;
131
                String s = osname.replace(" ", "");
132
                s = s.replace("_", "");
133
                s = s.replace("-", "");
134
                this.operatingSystemName = s;
135
                this.operatingSystemVersion = osversion;
136
            
137
            } else {
138
                String s = osname.replace(" ", "");
139
                s = s.replace("_", "");
140
                s = s.replace("-", "");
141
                this.operatingSystemFamily = s;
142
                this.operatingSystemName = null;
143
                this.operatingSystemVersion = osversion;
144
            }
145
        }
146

  
97 147
        @Override
98 148
	public String getOperatingSystem() {
99
		String osname = System.getProperty("os.name");
100
		if (osname.toLowerCase().startsWith("linux")) {
101
			return OS.LINUX;
102
		}
103
		if (osname.toLowerCase().startsWith("window")) {
104
			return OS.WINDOWS;
105
		}
106
		return osname;
107
	}
149
            if( this.operatingSystemFamily == null ) {
150
                loadOperatingSystemInfo();
151
            }
152
            StringBuilder builder = new StringBuilder();
153
            builder.append(this.operatingSystemFamily);
154
            if( this.operatingSystemName!=null ) {
155
                builder.append("_");
156
                builder.append(this.operatingSystemName);
157
                if( this.operatingSystemVersion!=null ) {
158
                    builder.append("_");
159
                    builder.append(this.operatingSystemVersion);
160
                }
161
            }
162
            return builder.toString();
163
        }
164
        
165
        @Override
166
        public String getOperatingSystemFamily() {
167
            if( this.operatingSystemFamily == null ) {
168
                loadOperatingSystemInfo();
169
            }
170
            return this.operatingSystemFamily;
171
        }
172
        
173
        @Override
174
        public String getOperatingSystemName() {
175
            if( this.operatingSystemFamily == null ) {
176
                loadOperatingSystemInfo();
177
            }
178
            return this.operatingSystemName;
179
        }
108 180

  
109 181
        @Override
182
        public String getOperatingSystemVersion() {
183
            if( this.operatingSystemFamily == null ) {
184
                loadOperatingSystemInfo();
185
            }
186
            return this.operatingSystemVersion;
187
        }
188

  
189
        @Override
110 190
	public String getArchitecture() {
111 191
		String osarch = System.getProperty("os.arch");
112 192
		if (osarch.toLowerCase().startsWith("i386")) {
113 193
			return ARCH.X86;
114 194
		}
195
		if (osarch.toLowerCase().startsWith("i686")) {
196
			return ARCH.X86;
197
		}
198
		if (osarch.toLowerCase().startsWith("x86_64")) {
199
			return ARCH.X86_64;
200
		}
115 201
		if (osarch.toLowerCase().startsWith("x86")) {
116 202
			return ARCH.X86;
117 203
		}
118 204
		if (osarch.toLowerCase().startsWith("amd64")) {
119 205
			return ARCH.X86_64;
120 206
		}
121
		return osarch;	}
207
		return osarch;	
208
        }
122 209

  
123 210
        @Override
124 211
	public void writePacakgeInfo(PackageInfo packageInfo, File file)
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/packageutils/impl/DefaultPackageInfo.java
38 38
import java.util.Iterator;
39 39
import java.util.List;
40 40
import java.util.Map;
41
import org.apache.commons.lang3.StringUtils;
41 42

  
42 43
import org.gvsig.installer.lib.api.Dependencies;
43 44
import org.gvsig.installer.lib.api.Version;
......
88 89
    private boolean broken = false;
89 90

  
90 91
    private String state = STATE.DEVEL;
91
    private String operatingSystem = OS.ALL;
92
//    private String operatingSystem = OS.ALL;
93
    private String operatingSystemFamily = OS.ALL;
94
    private String operatingSystemName = null;
95
    private String operatingSystemVersion = null;
92 96
    private String architecture = ARCH.ALL;
93 97
    private String javaVM = JVM.J1_5;
94 98

  
......
236 240
        this.official = official;
237 241
    }
238 242

  
243
    @Override
239 244
    public String getOperatingSystem() {
240
        return operatingSystem;
245
        StringBuilder operatingSystem = new StringBuilder();
246
        operatingSystem.append(this.operatingSystemFamily);
247
        if( !StringUtils.isEmpty(this.operatingSystemName) ) {
248
            operatingSystem.append("_");
249
            operatingSystem.append(this.operatingSystemName);
250
            if( !StringUtils.isEmpty(this.operatingSystemVersion) ) {
251
                operatingSystem.append("_");
252
                operatingSystem.append(this.operatingSystemVersion);
253
            }
254
        }
255
        return operatingSystem.toString();
241 256
    }
242 257

  
258
    @Override
243 259
    public void setOperatingSystem(String operatingSystem) {
244 260
    	if( isEmptyString(operatingSystem) ) {
245
    		this.operatingSystem = OS.ALL;
261
    		this.operatingSystemFamily = OS.ALL;
262
    		this.operatingSystemName = null;
263
    		this.operatingSystemVersion = null;
246 264
    	} else {
247
    		this.operatingSystem = operatingSystem;
265
            if( operatingSystem.contains("_") ) {
266
                String s[] = operatingSystem.split("_");
267
                switch(s.length) {
268
                    case 2:
269
                        this.operatingSystemFamily = s[0];
270
                        this.operatingSystemName = s[1];
271
                        break;
272
                    case 3:
273
                        this.operatingSystemFamily = s[0];
274
                        this.operatingSystemName = s[1];
275
                        this.operatingSystemVersion = s[2];
276
                        break;
277
                    default:
278
                        throw new IllegalArgumentException("Can't parse OS '"+operatingSystem+"'.");
279
                }
280
            } else {
281
                this.operatingSystemFamily = operatingSystem;
282
            }
248 283
    	}
249 284
    }
285
    
286
    @Override
287
    public String getOperatingSystemFamily() {
288
        return this.operatingSystemFamily;
289
    }
290
    
291
    @Override
292
    public String getOperatingSystemName() {
293
        return this.operatingSystemName;
294
    }
295
    
296
    @Override
297
    public String getOperatingSystemVersion() {
298
        return this.operatingSystemVersion;
299
    }
250 300

  
301
    public void setOperatingSystemFamily(String operatingSystemFamily) {
302
        this.operatingSystemFamily = operatingSystemFamily;
303
    }
304
    
305
    public void setOperatingSystemName(String operatingSystemName) {
306
        this.operatingSystemName = operatingSystemName;
307
    }
308
    
309
    public void setOperatingSystemVersion(String operatingSystemVersion) {
310
        this.operatingSystemVersion = operatingSystemVersion;
311
    }
312

  
251 313
    public String getArchitecture() {
252 314
        return architecture;
253 315
    }
......
409 471
    	s.append(" ");
410 472
    	s.append(strformat(this.state,-5,-5));
411 473
    	s.append(" ");
412
    	s.append(strformat(this.operatingSystem,-5,-5)); 
474
    	s.append(strformat(this.getOperatingSystem(),-5,-5)); 
413 475
    	s.append(" ");
414 476
    	s.append(strformat(this.architecture,-6,-6));
415 477
    	s.append(" ");
......
585 647
        }
586 648
    }
587 649

  
650
    @Override
588 651
    public boolean equals(Object obj) {
589 652
        PackageInfo other;
590 653
        try {
......
598 661
        if (!version.check("=", other.getVersion())) {
599 662
            return false;
600 663
        }
601
        if (!operatingSystem.equalsIgnoreCase(other.getOperatingSystem())) {
664
        if (!getOperatingSystem().equalsIgnoreCase(other.getOperatingSystem())) {
602 665
            return false;
603 666
        }
604 667
        if (!applicationVersion.equals(other.getApplicationVersion())) {

Also available in: Unified diff