package au.org.aurin.wif.impl; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.inject.Inject; import org.geotools.factory.GeoTools; import org.geotools.referencing.CRS; import org.opengis.referencing.crs.CoordinateReferenceSystem; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.SpringVersion; import org.springframework.stereotype.Service; import com.fasterxml.jackson.databind.ObjectMapper; import au.org.aurin.wif.io.DataStoreClient; import au.org.aurin.wif.model.WifProject; import au.org.aurin.wif.model.reports.ProjectReport; import au.org.aurin.wif.svc.OWIService; import au.org.aurin.wif.svc.ProjectService; import au.org.aurin.wif.svc.WifKeys; import au.org.aurin.wif.svc.datacreator.DBDataCreatorService; /** * The Class OWIServiceImpl. */ @Service @Qualifier("oWIService") public class OWIServiceImpl implements OWIService { /** The Constant serialVersionUID. */ @SuppressWarnings("unused") private static final long serialVersionUID = 1363346734533L; /** The Constant LOGGER. */ private static final Logger LOGGER = LoggerFactory .getLogger(OWIServiceImpl.class); /** The data creator. */ @Autowired private DBDataCreatorService dataCreator; /** The versions map. */ private final HashMap<String, String> versionsMap = new HashMap<String, String>(); /** The data store client. */ @Inject private DataStoreClient dataStoreClient; @Autowired private ProjectService projectService; /** * Inits the demonstration data. */ @PostConstruct public void init() { LOGGER.info("Initializing version: {} ", WifKeys.WIF_KEY_VERSION); LOGGER.info("Spring version: {} ", SpringVersion.getVersion()); LOGGER.info("GeoTools version: {} ", GeoTools.getVersion()); // LOGGER.info("Datastore client version: {} ", // dataStoreClient.getVersion()); LOGGER.info("loading demonstration data..."); try { // final WifProject project = dataCreator.createDemonstrationModule( // WifKeys.TEST_PROJECT_ID, WifKeys.TEST_SUITABILITY_SCENARIO_ID, // WifKeys.TEST_DEMAND_CONFIG_ID, WifKeys.TEST_DEMAND_SCENARIO_ID, // WifKeys.TEST_ALLOCATION_SCENARIO_ID, // WifKeys.TEST_ALLOCATION_REPORT_ID, // WifKeys.TEST_MANUAL_DEMAND_CONFIG_ID); // Assert.notNull(project, "Default project must not be null"); // LOGGER.info(" successfully loaded all demonstration data!!"); ///new for copying demo project after deploy. Boolean lsw = false; final List<WifProject> wifProjects = projectService.getAllProjects(WifKeys.SHIB_ROLE_NAME); for (final WifProject prj:wifProjects) { if (prj.getRoleOwner().toLowerCase().equals(WifKeys.SHIB_ROLE_NAME.toLowerCase())) { if (prj.getLabel().toLowerCase().equals(WifKeys.DEMO_PROJECT_NAME_ADMIN.toLowerCase())) { lsw = true; } } } if (lsw == false) { final String roleId = WifKeys.SHIB_ROLE_NAME; final ObjectMapper mapper = new ObjectMapper(); final URL jsonsource = getClass().getResource("/wanneroo.json"); final ProjectReport projectReport = mapper.readValue(jsonsource.openStream(),ProjectReport.class); final WifProject wifProject = projectService.restoreProjectConfiguration(projectReport); LOGGER.info("*******>> project default restored with ID ={} ", wifProject.getId()); final WifProject newProject = projectService.getProject(wifProject.getId()); newProject.setName(WifKeys.DEMO_PROJECT_NAME_ADMIN); newProject.setRoleOwner(roleId); //wanneroo table must exists in the database before. newProject.getSuitabilityConfig().setUnifiedAreaZone("wanneroo"); projectService.updateProject(newProject); //pubish Geoserver layer CoordinateReferenceSystem crs = null; crs = CRS.decode(WifKeys.CRS_WANNEROO); //EPSG:28350 projectService.PublishWMSLayer( newProject.getSuitabilityConfig().getUnifiedAreaZone(), crs, newProject.getId()); } ///end new LOGGER.info(" successfully loaded all demonstration data!!"); } catch (final Exception e) { LOGGER.error(" demonstration data could not be loaded!"); } } /** * Cleanup. */ @PreDestroy public void cleanup() { LOGGER.trace(" Service succesfully cleared! "); } /* * (non-Javadoc) * @see au.org.aurin.wif.svc.OWIService#getOWIVersion() */ @Override public Map<String, String> getOWIVersion() { LOGGER.info("Using version: " + WifKeys.WIF_KEY_VERSION); LOGGER.info("Spring version: {} ", SpringVersion.getVersion()); LOGGER.info("GeoTools version: {} ", GeoTools.getVersion()); // LOGGER.info("Datastore client version: {} ", // dataStoreClient.getVersion()); versionsMap.put("What-If API", WifKeys.WIF_KEY_VERSION); versionsMap.put("Spring", SpringVersion.getVersion()); versionsMap.put("Geotools", GeoTools.getVersion().toString()); versionsMap.put("DatastoreClient", "N/A"); return versionsMap; } }