Revision 1431 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/packageutils/impl/DefaultPackageManager.java

View differences:

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)

Also available in: Unified diff