Project

General

Profile

« Previous | Next » 

Revision 5a20c932

Added by Andreas Müller almost 4 years ago

ref #9025 improve localhost mgd. handling for schema create and update and some general minor improvements and refactorings

View differences:

eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/source/CdmServerInfo.java
41 41
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
42 42
import eu.etaxonomy.cdm.config.CdmSourceException;
43 43
import eu.etaxonomy.cdm.config.ConfigFileUtil;
44
import eu.etaxonomy.cdm.config.ICdmSource;
44 45
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
45 46
import eu.etaxonomy.cdm.database.ICdmDataSource;
46 47
import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
......
96 97
        this.port = parameterObject.getPort();
97 98
        this.prefix = parameterObject.getPrefix();
98 99
        this.ignoreCdmLibVersion = parameterObject.isIgnoreCdmLibVersion();
99
        instances = new ArrayList<>();
100
        this.instances = new ArrayList<>();
101
    }
102

  
103
    public CdmInstanceInfo addInstance(String name, ICdmDataSource dataSource) {
104
        CdmInstanceInfo cii = new CdmInstanceInfo(name, dataSource);
105
        instances.add(cii);
106
        return cii;
100 107
    }
101 108

  
102 109
    public CdmInstanceInfo addInstance(String name, String basePath) {
103
        String _basePath = basePath;
104
        if(isLocalhostMgd()) {
105
            _basePath = "";
106
        }
107
        CdmInstanceInfo cii = new CdmInstanceInfo(name, _basePath);
110
        CdmInstanceInfo cii = new CdmInstanceInfo(name, basePath);
108 111
        instances.add(cii);
109 112
        return cii;
110 113
    }
......
134 137
        }
135 138
        Collections.sort(instances, new Comparator<CdmInstanceInfo>() {
136 139
            @Override
137
            public int compare(CdmInstanceInfo cii1, CdmInstanceInfo cii2)
138
            {
140
            public int compare(CdmInstanceInfo cii1, CdmInstanceInfo cii2){
139 141
                return cii1.getName().toString().compareTo(cii2.getName().toString());
140 142
            }
141 143
        });
......
237 239
        for(ICdmDataSource dataSource : CdmPersistentDataSource.getAllDataSources()){
238 240
            String datasourceNCName = CdmServerUtils.xmlNCNamefrom(dataSource.getName());
239 241
            logger.info("Adding local instance " + dataSource.getName() + " as " + datasourceNCName);
240
            addInstance(datasourceNCName, datasourceNCName);
242
            addInstance(datasourceNCName, dataSource);
241 243
        }
242 244
    }
243 245

  
......
258 260
        return null;
259 261
    }
260 262

  
261
    public CdmRemoteSource getCdmRemoteSource(CdmInstanceInfo instance, int port) {
263
    public ICdmRemoteSource getCdmRemoteSource(CdmInstanceInfo instance, int port) {
262 264
        if(instance != null) {
263
            return CdmRemoteSource.NewInstance(name,
264
                    server,
265
                    port,
266
                    instance.getBasePath()
267
                    );
265
            if (instance.getDataSource()!=null){
266
                return CdmRemoteLocalhostSource.NewInstance(name,
267
                        server,
268
                        port,
269
                        instance.name
270
                        );
271
            }else{
272
                return CdmRemoteSource.NewInstance(name,
273
                        server,
274
                        port,
275
                        instance.getBasePath()
276
                        );
277
            }
268 278
        }
269 279
        return null;
270 280
    }
......
282 292
    }
283 293

  
284 294
    public boolean pingInstance(CdmInstanceInfo instance, int port) throws CdmServerException  {
285
        ICdmRemoteSource cdmRemoteSource = getCdmRemoteSource(instance, port);
295
        ICdmSource cdmRemoteSource = getCdmRemoteSource(instance, port);
286 296
        try {
287 297
            if(cdmRemoteSource != null && cdmRemoteSource.checkConnection()) {
288 298
                logger.info("[CDM-Server] Running @ " + server + ":" + port + " for instance " + instance);
......
298 308

  
299 309
    public int compareDbSchemaVersion(CdmInstanceInfo instance, int port) throws CdmServerException {
300 310

  
301
        ICdmRemoteSource crs = getCdmRemoteSource(instance, port);
302
        String dbSchemaVersion;
311
        ICdmSource remoteSource = getCdmRemoteSource(instance, port);
312
        String remoteDbSchemaVersion;
303 313
        try {
304
            dbSchemaVersion = crs.getDbSchemaVersion();
314
            remoteDbSchemaVersion = remoteSource.getDbSchemaVersion();
305 315
        } catch (CdmSourceException e) {
306 316
            throw new CdmServerException(e);
307 317
        }
308 318

  
309

  
310
        if(dbSchemaVersion != null) {
311
            return CdmMetaData.compareVersion(dbSchemaVersion, CdmMetaData.getDbSchemaVersion(), 3, null);
319
        if(remoteDbSchemaVersion != null) {
320
            return CdmMetaData.compareVersion(remoteDbSchemaVersion, CdmMetaData.getDbSchemaVersion(), 3, null);
312 321
        } else {
313
            throw new CdmServerException("Cannot determine editor db. schema version");
322
            throw new CdmServerException("Cannot determine editor db schema version");
314 323
        }
315 324
    }
316 325

  
......
413 422
        }
414 423

  
415 424
        return serverList;
416

  
417

  
418 425
    }
419 426

  
420 427
    private static List<CdmServerInfoConfig> createDefaultServerConfigList() {
......
449 456
        return instances;
450 457
    }
451 458

  
452
    public static CdmRemoteSource getDevServerRemoteSource() {
459
    public static ICdmSource getDevServerRemoteSource() {
453 460
        String value = System.getProperty("cdm.server.dev.port");
454 461
        boolean available = false;
455 462
        CdmInstanceInfo devInstance = null;
......
486 493
         */
487 494
        private final String basePath;
488 495

  
496
        private final ICdmDataSource dataSource;
497

  
489 498
        public CdmInstanceInfo(String name, String basePath) {
490 499
            this.name = name;
491 500
            this.basePath = basePath;
501
            this.dataSource = null;
502
        }
503

  
504
        public CdmInstanceInfo(String name, ICdmDataSource dataSource) {
505
            this.name = name;
506
            this.basePath = "";
507
            this.dataSource = dataSource;
492 508
        }
493 509

  
494 510
        public String getName() {
......
498 514
        public String getBasePath() {
499 515
            return basePath;
500 516
        }
517

  
518
        public ICdmDataSource getDataSource() {
519
            return dataSource;
520
        }
501 521
    }
502 522
}

Also available in: Unified diff