diff --git a/sge-backend/src/main/java/com/sgs/SgsApplication.java b/sge-backend/src/main/java/com/sgs/SgsApplication.java index d150b6a..df09726 100644 --- a/sge-backend/src/main/java/com/sgs/SgsApplication.java +++ b/sge-backend/src/main/java/com/sgs/SgsApplication.java @@ -1,897 +1,897 @@ -package com.sgs; - -import com.sgs.graphql.activitySubUnit.domain.ActivitySubUnit; -import com.sgs.graphql.activitySubUnit.service.ActivitySubUnitService; -import com.sgs.graphql.area.domain.Area; -import com.sgs.graphql.area.service.AreaService; -import com.sgs.graphql.city.domain.City; -import com.sgs.graphql.city.repo.CityRepo; -import com.sgs.graphql.city.service.CityService; -import com.sgs.graphql.consuptionUnit.domain.ConsuptionUnit; -import com.sgs.graphql.consuptionUnit.repo.ConsuptionUnitRepo; -import com.sgs.graphql.consuptionUnit.service.ConsuptionUnitService; -import com.sgs.graphql.country.domain.Country; -import com.sgs.graphql.country.repo.CountryRepo; -import com.sgs.graphql.country.service.CountryService; -import com.sgs.graphql.district.domain.District; -import com.sgs.graphql.district.repo.DistrictRepo; -import com.sgs.graphql.district.service.DistrictService; -import com.sgs.graphql.emissionScope.domain.EmissionScope; -import com.sgs.graphql.emissionScope.service.EmissionScopeService; -import com.sgs.graphql.emissionSource.domain.EmissionSource; -import com.sgs.graphql.emissionSource.repo.EmissionSourceRepo; -import com.sgs.graphql.emissionSource.service.EmissionSourceService; -import com.sgs.graphql.emissionSourceConvertUnits.domain.EmissionSourceConvertUnit; -import com.sgs.graphql.emissionSourceConvertUnits.service.EmissionSourceConvertUnitService; -import com.sgs.graphql.gpcReference.domain.GpcReference; -import com.sgs.graphql.gpcReference.service.GpcReferenceService; -import com.sgs.graphql.mail.domain.MailInfo; -import com.sgs.graphql.mail.service.MailInfoService; -import com.sgs.graphql.mcfType.domain.McfType; -import com.sgs.graphql.mcfType.service.McfTypeService; -import com.sgs.graphql.neighborhood.domain.Neighborhood; -import com.sgs.graphql.neighborhood.repo.NeighborhoodRepo; -import com.sgs.graphql.neighborhood.service.NeighborhoodService; -import com.sgs.graphql.organization.domain.Organization; -import com.sgs.graphql.organization.service.OrganizationService; -import com.sgs.graphql.permission.domain.Permission; -import com.sgs.graphql.permission.domain.PermissionDescription; -import com.sgs.graphql.permission.domain.PermissionName; -import com.sgs.graphql.permission.service.PermissionService; -import com.sgs.graphql.role.domain.Role; -import com.sgs.graphql.role.repo.RoleRepo; -import com.sgs.graphql.role.service.RoleService; -import com.sgs.graphql.sector.domain.Sector; -import com.sgs.graphql.sector.service.SectorService; -import com.sgs.graphql.solidWasteType.domain.SolidWasteType; -import com.sgs.graphql.solidWasteType.service.SolidWasteTypeService; -import com.sgs.graphql.subSector.domain.SubSector; -import com.sgs.graphql.subSector.repo.SubSectorRepo; -import com.sgs.graphql.subSector.service.SubSectorService; -import com.sgs.graphql.user.domain.User; -import com.sgs.graphql.user.service.UserService; -import com.sgs.graphql.wasteEmissionSource.domain.WasteEmissionSourceSupplement; -import com.sgs.graphql.wasteEmissionSource.service.WasteEmissionSourceSupplementService; - -import org.json.JSONArray; -import org.json.JSONObject; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.CommandLineRunner; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.security.crypto.password.PasswordEncoder; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.*; - -@SpringBootApplication -public class SgsApplication implements CommandLineRunner { - - private final PermissionService permissionService; - private final RoleService roleService; - private final RoleRepo roleRepo; - private final AreaService areaService; - private final NeighborhoodRepo neighborhoodRepo; - private final NeighborhoodService neighborhoodService; - private final CityService cityService; - private final CityRepo cityRepo; - private final DistrictRepo districtRepo; - private final DistrictService districtService; - private final CountryRepo countryRepo; - private final CountryService countryService; - private final OrganizationService organizationService; - private final UserService userService; - private final PasswordEncoder passwordEncoder; - private final SectorService sectorService; - private final SubSectorService subSectorService; - private final EmissionScopeService emissionScopeService; - private final GpcReferenceService gpcReferenceService; - private final SubSectorRepo subSectorRepo; - private final ActivitySubUnitService activitySubUnitService; - private final ConsuptionUnitService consuptionUnitService; - private final EmissionSourceService emissionSourceService; - private final EmissionSourceRepo emissionSourceRepo; - private final ConsuptionUnitRepo consuptionUnitRepo; - private final EmissionSourceConvertUnitService emissionSourceConvertUnitService; - private final SolidWasteTypeService solidWasteTypeService; - private final McfTypeService mcfTypeService; - private final WasteEmissionSourceSupplementService wasteEmissionSourceSupplementService; - private final MailInfoService mailInfoService; - - @Value("${mail.hostname:mail.blc-css.com}") - private String mailHostname; - - @Value("${mail.smtp.port:465}") - private int mailSmtpPort; - - @Value("${mail.address:info@blc-css.com}") - private String mailAddress; - - @Value("${mail.password:}") - private String mailPassword; - - public static void main(String[] args) { - SpringApplication.run(SgsApplication.class, args); - } - - @Autowired - public SgsApplication(RoleService roleService, PermissionService permissionService, RoleRepo roleRepo, - AreaService areaService, NeighborhoodRepo neighborhoodRepo, NeighborhoodService neighborhoodService, - CityService cityService, - CityRepo cityRepo, DistrictRepo districtRepo, DistrictService districtService, CountryRepo countryRepo, - CountryService countryService, OrganizationService organizationService, UserService userService, - PasswordEncoder passwordEncoder, SectorService sectorService, SubSectorService subSectorService, - EmissionScopeService emissionScopeService, GpcReferenceService gpcReferenceService, - SubSectorRepo subSectorRepo, ActivitySubUnitService activitySubUnitService, - ConsuptionUnitService consuptionUnitService, EmissionSourceService emissionSourceService, - EmissionSourceRepo emissionSourceRepo, ConsuptionUnitRepo consuptionUnitRepo, - EmissionSourceConvertUnitService emissionSourceConvertUnitService, - SolidWasteTypeService solidWasteTypeService, McfTypeService mcfTypeService, - WasteEmissionSourceSupplementService wasteEmissionSourceSupplementService, - MailInfoService mailInfoService) { - this.roleService = roleService; - this.permissionService = permissionService; - this.roleRepo = roleRepo; - this.areaService = areaService; - this.neighborhoodRepo = neighborhoodRepo; - this.neighborhoodService = neighborhoodService; - this.cityService = cityService; - this.cityRepo = cityRepo; - this.districtRepo = districtRepo; - this.districtService = districtService; - this.countryRepo = countryRepo; - this.countryService = countryService; - this.organizationService = organizationService; - this.userService = userService; - this.passwordEncoder = passwordEncoder; - this.sectorService = sectorService; - this.subSectorService = subSectorService; - this.emissionScopeService = emissionScopeService; - this.gpcReferenceService = gpcReferenceService; - this.subSectorRepo = subSectorRepo; - this.activitySubUnitService = activitySubUnitService; - this.consuptionUnitService = consuptionUnitService; - this.emissionSourceService = emissionSourceService; - this.emissionSourceRepo = emissionSourceRepo; - this.consuptionUnitRepo = consuptionUnitRepo; - this.emissionSourceConvertUnitService = emissionSourceConvertUnitService; - this.solidWasteTypeService = solidWasteTypeService; - this.mcfTypeService = mcfTypeService; - this.wasteEmissionSourceSupplementService = wasteEmissionSourceSupplementService; - this.mailInfoService = mailInfoService; - } - - void createDefaultOrganization() { - Organization organization = new Organization(); - organization.setTag("BLC"); - organization.setDescription("BLC Communication and Security Systems"); - organizationService.save(organization); - } - - void createDefaultUser() { - Role role = roleRepo.findByTag("SUPER_ADMIN").orElse(null); - List permissions = new ArrayList<>(); - if (!permissionService.findAll().isEmpty()) { - permissions.addAll(permissionService.findAll()); - } - role.setPermissions(permissions); - - // List organizations = organizationRepo.findByTag("BLC"); - - User admin = new User(); - admin.setFirstName("Seda"); - admin.setLastName("Kemikli"); - admin.setEmail("seda.kemikli@blc-css.com"); - admin.setPhoneNumber("11111111"); - admin.setPassword(passwordEncoder.encode("admin")); - // if (organizations.size() == 1) { - // admin.setOrganizations(organizations); - // } - admin.setRole(role); - admin.setStatus("aktif"); - userService.save(admin); - } - - public void createDefaultPermission() { - - Permission activities_get = new Permission(); - activities_get.setTag(PermissionName.ACTIVITIES_GET); - activities_get.setDescription(PermissionDescription.ACTIVITIES_GET); - - Permission paginate_user_histories = new Permission(); - paginate_user_histories.setTag(PermissionName.PAGINATE_USER_HISTORIES); - paginate_user_histories.setDescription(PermissionDescription.PAGINATE_USER_HISTORIES); - - Permission activity_sub_units_get = new Permission(); - activity_sub_units_get.setTag(PermissionName.ACTIVITY_SUB_UNITS_GET); - activity_sub_units_get.setDescription(PermissionDescription.ACTIVITY_SUB_UNITS_GET); - - Permission sub_sectors_get = new Permission(); - sub_sectors_get.setTag(PermissionName.SUB_SECTORS_GET); - sub_sectors_get.setDescription(PermissionDescription.SUB_SECTORS_GET); - - Permission sectors_get = new Permission(); - sectors_get.setTag(PermissionName.SECTORS_GET); - sectors_get.setDescription(PermissionDescription.SECTORS_GET); - - Permission deleted_items = new Permission(); - deleted_items.setTag(PermissionName.GET_DELETED_ITEMS); - deleted_items.setDescription(PermissionDescription.GET_DELETED_ITEMS); - - Permission user_create = new Permission(); - user_create.setTag(PermissionName.USER_CREATE); - user_create.setDescription(PermissionDescription.USER_CREATE); - - Permission user_update = new Permission(); - user_update.setTag(PermissionName.USER_UPDATE); - user_update.setDescription(PermissionDescription.USER_UPDATE); - - Permission user_delete = new Permission(); - user_delete.setTag(PermissionName.USER_DELETE); - user_delete.setDescription(PermissionDescription.USER_DELETE); - - Permission paginate_users_get = new Permission(); - paginate_users_get.setTag(PermissionName.PAGINATE_USERS_GET); - paginate_users_get.setDescription(PermissionDescription.PAGINATE_USERS_GET); - - Permission role_create = new Permission(); - role_create.setTag(PermissionName.ROLE_CREATE); - role_create.setDescription(PermissionDescription.ROLE_CREATE); - - Permission role_update = new Permission(); - role_update.setTag(PermissionName.ROLE_UPDATE); - role_update.setDescription(PermissionDescription.ROLE_UPDATE); - - Permission role_delete = new Permission(); - role_delete.setTag(PermissionName.ROLE_DELETE); - role_delete.setDescription(PermissionDescription.ROLE_DELETE); - - Permission paginate_roles_get = new Permission(); - paginate_roles_get.setTag(PermissionName.PAGINATE_ROLES_GET); - paginate_roles_get.setDescription(PermissionDescription.PAGINATE_ROLES_GET); - - Permission organization_create = new Permission(); - organization_create.setTag(PermissionName.ORGANIZATION_CREATE); - organization_create.setDescription(PermissionDescription.ORGANIZATION_CREATE); - - Permission organization_update = new Permission(); - organization_update.setTag(PermissionName.ORGANIZATION_UPDATE); - organization_update.setDescription(PermissionDescription.ORGANIZATION_UPDATE); - - Permission organization_delete = new Permission(); - organization_delete.setTag(PermissionName.ORGANIZATION_DELETE); - organization_delete.setDescription(PermissionDescription.ORGANIZATION_DELETE); - - Permission paginate_organizations_get = new Permission(); - paginate_organizations_get.setTag(PermissionName.PAGINATE_ORGANIZATIONS_GET); - paginate_organizations_get.setDescription(PermissionDescription.PAGINATE_ORGANIZATIONS_GET); - - Permission area_create = new Permission(); - area_create.setTag(PermissionName.AREA_CREATE); - area_create.setDescription(PermissionDescription.AREA_CREATE); - - Permission area_update = new Permission(); - area_update.setTag(PermissionName.AREA_UPDATE); - area_update.setDescription(PermissionDescription.AREA_UPDATE); - - Permission area_delete = new Permission(); - area_delete.setTag(PermissionName.AREA_DELETE); - area_delete.setDescription(PermissionDescription.AREA_DELETE); - - Permission paginate_areas_get = new Permission(); - paginate_areas_get.setTag(PermissionName.PAGINATE_AREAS_GET); - paginate_areas_get.setDescription(PermissionDescription.PAGINATE_AREAS_GET); - - Permission neighborhood_create = new Permission(); - neighborhood_create.setTag(PermissionName.NEIGHBORHOOD_CREATE); - neighborhood_create.setDescription(PermissionDescription.NEIGHBORHOOD_CREATE); - - Permission neighborhood_update = new Permission(); - neighborhood_update.setTag(PermissionName.NEIGHBORHOOD_UPDATE); - neighborhood_update.setDescription(PermissionDescription.NEIGHBORHOOD_UPDATE); - - Permission neighborhood_delete = new Permission(); - neighborhood_delete.setTag(PermissionName.NEIGHBORHOOD_DELETE); - neighborhood_delete.setDescription(PermissionDescription.NEIGHBORHOOD_DELETE); - - Permission paginate_neighborhoods_get = new Permission(); - paginate_neighborhoods_get.setTag(PermissionName.PAGINATE_NEIGHBORHOODS_GET); - paginate_neighborhoods_get.setDescription(PermissionDescription.PAGINATE_NEIGHBORHOODS_GET); - - Permission paginate_cities_get = new Permission(); - paginate_cities_get.setTag(PermissionName.PAGINATE_CITIES_GET); - paginate_cities_get.setDescription(PermissionDescription.PAGINATE_CITIES_GET); - - Permission paginate_districts_get = new Permission(); - paginate_districts_get.setTag(PermissionName.PAGINATE_DISTRICTS_GET); - paginate_districts_get.setDescription(PermissionDescription.PAGINATE_DISTRICTS_GET); - - Permission paginate_countries_get = new Permission(); - paginate_countries_get.setTag(PermissionName.PAGINATE_COUNTRIES_GET); - paginate_countries_get.setDescription(PermissionDescription.PAGINATE_COUNTRIES_GET); - - Permission emission_source_create = new Permission(); - emission_source_create.setTag(PermissionName.EMISSION_SOURCE_CREATE); - emission_source_create.setDescription(PermissionDescription.EMISSION_SOURCE_CREATE); - - Permission emission_source_update = new Permission(); - emission_source_update.setTag(PermissionName.EMISSION_SOURCE_UPDATE); - emission_source_update.setDescription(PermissionDescription.EMISSION_SOURCE_UPDATE); - - Permission emission_source_delete = new Permission(); - emission_source_delete.setTag(PermissionName.EMISSION_SOURCE_DELETE); - emission_source_delete.setDescription(PermissionDescription.EMISSION_SOURCE_DELETE); - - Permission paginate_emission_sources_get = new Permission(); - paginate_emission_sources_get.setTag(PermissionName.PAGINATE_EMISSION_SOURCES_GET); - paginate_emission_sources_get.setDescription(PermissionDescription.PAGINATE_EMISSION_SOURCES_GET); - - Permission dataset_create = new Permission(); - dataset_create.setTag(PermissionName.DATASET_CREATE); - dataset_create.setDescription(PermissionDescription.DATASET_CREATE); - - Permission dataset_update = new Permission(); - dataset_update.setTag(PermissionName.DATASET_UPDATE); - dataset_update.setDescription(PermissionDescription.DATASET_UPDATE); - - Permission dataset_delete = new Permission(); - dataset_delete.setTag(PermissionName.DATASET_DELETE); - dataset_delete.setDescription(PermissionDescription.DATASET_DELETE); - - Permission paginate_datasets_get = new Permission(); - paginate_datasets_get.setTag(PermissionName.PAGINATE_DATASETS_GET); - paginate_datasets_get.setDescription(PermissionDescription.PAGINATE_DATASETS_GET); - - Permission answer_create = new Permission(); - answer_create.setTag(PermissionName.ANSWER_CREATE); - answer_create.setDescription(PermissionDescription.ANSWER_CREATE); - - Permission answer_update = new Permission(); - answer_update.setTag(PermissionName.ANSWER_UPDATE); - answer_update.setDescription(PermissionDescription.ANSWER_UPDATE); - - Permission answer_delete = new Permission(); - answer_delete.setTag(PermissionName.ANSWER_DELETE); - answer_delete.setDescription(PermissionDescription.ANSWER_DELETE); - - Permission paginate_answers_get = new Permission(); - paginate_answers_get.setTag(PermissionName.PAGINATE_ANSWERS_GET); - paginate_answers_get.setDescription(PermissionDescription.PAGINATE_ANSWERS_GET); - - Permission question_create = new Permission(); - question_create.setTag(PermissionName.QUESTION_CREATE); - question_create.setDescription(PermissionDescription.QUESTION_CREATE); - - Permission question_update = new Permission(); - question_update.setTag(PermissionName.QUESTION_UPDATE); - question_update.setDescription(PermissionDescription.QUESTION_UPDATE); - - Permission question_delete = new Permission(); - question_delete.setTag(PermissionName.QUESTION_DELETE); - question_delete.setDescription(PermissionDescription.QUESTION_DELETE); - - Permission paginate_questions_get = new Permission(); - paginate_questions_get.setTag(PermissionName.PAGINATE_QUESTIONS_GET); - paginate_questions_get.setDescription(PermissionDescription.PAGINATE_QUESTIONS_GET); - - Permission undelete_items = new Permission(); - undelete_items.setTag(PermissionName.UNDELETE_ITEMS); - undelete_items.setDescription(PermissionDescription.UNDELETE_ITEMS); - - Permission published_survey_create = new Permission(); - published_survey_create.setTag(PermissionName.PUBLISHED_SURVEY_CREATE); - published_survey_create.setDescription(PermissionDescription.PUBLISHED_SURVEY_CREATE); - - Permission surveys_get = new Permission(); - surveys_get.setTag(PermissionName.SURVEYS_GET); - surveys_get.setDescription(PermissionDescription.SURVEYS_GET); - - Permission paginate_surveys_get = new Permission(); - paginate_surveys_get.setTag(PermissionName.PAGINATE_SURVEYS_GET); - paginate_surveys_get.setDescription(PermissionDescription.PAGINATE_SURVEYS_GET); - - Permission survey_update = new Permission(); - survey_update.setTag(PermissionName.SURVEY_UPDATE); - survey_update.setDescription(PermissionDescription.SURVEY_UPDATE); - - Permission survey_delete = new Permission(); - survey_delete.setTag(PermissionName.SURVEY_DELETE); - survey_delete.setDescription(PermissionDescription.SURVEY_DELETE); - - Permission survey_add = new Permission(); - survey_add.setTag(PermissionName.SURVEY_ADD); - survey_add.setDescription(PermissionDescription.SURVEY_ADD); - - Permission show_graphics = new Permission(); - show_graphics.setTag(PermissionName.SHOW_GRAPHICS); - show_graphics.setDescription(PermissionDescription.SHOW_GRAPHICS); - - Permission settings_access = new Permission(); - settings_access.setTag(PermissionName.SETTINGS_ACCESS); - settings_access.setDescription(PermissionDescription.SETTINGS_ACCESS); - - Permission data_center_create = new Permission(); - data_center_create.setTag(PermissionName.DATA_CENTER_CREATE); - data_center_create.setDescription(PermissionDescription.DATA_CENTER_CREATE); - - Permission data_center_delete = new Permission(); - data_center_delete.setTag(PermissionName.DATA_CENTER_DELETE); - data_center_delete.setDescription(PermissionDescription.DATA_CENTER_DELETE); - - Permission data_center_update = new Permission(); - data_center_update.setTag(PermissionName.DATA_CENTER_UPDATE); - data_center_update.setDescription(PermissionDescription.DATA_CENTER_UPDATE); - - Permission data_center_read = new Permission(); - data_center_read.setTag(PermissionName.DATA_CENTER_READ); - data_center_read.setDescription(PermissionDescription.DATA_CENTER_READ); - - Permission paginate_datacenters_get = new Permission(); - paginate_datacenters_get.setTag(PermissionName.PAGINATE_DATACENTERS_GET); - paginate_datacenters_get.setDescription(PermissionDescription.PAGINATE_DATACENTERS_GET); - - permissionService.saveAll(List.of( - show_graphics, activities_get, paginate_user_histories, activity_sub_units_get, sub_sectors_get, - sectors_get, deleted_items, undelete_items, user_create, user_update, user_delete, paginate_users_get, - role_create, role_update, role_delete, paginate_roles_get, - organization_create, organization_update, organization_delete, paginate_organizations_get, - area_create, area_update, area_delete, paginate_areas_get, - neighborhood_create, neighborhood_update, neighborhood_delete, paginate_neighborhoods_get, - paginate_districts_get, - paginate_cities_get, - paginate_countries_get, - emission_source_create, emission_source_update, emission_source_delete, paginate_emission_sources_get, - dataset_create, dataset_update, dataset_delete, paginate_datasets_get, - answer_create, answer_delete, answer_update, paginate_answers_get, - question_create, question_delete, question_update, paginate_questions_get, - published_survey_create, surveys_get, paginate_surveys_get, - survey_add, survey_delete, survey_update, settings_access, data_center_create, data_center_delete, - data_center_update, data_center_read, paginate_datacenters_get)); - } - - public void createDefaultRole() { - Role role = new Role(); - role.setTag("SUPER_ADMIN"); - role.setPermissions(permissionService.findAll()); - roleService.save(role); - } - - void createCountry() { - Country country = new Country(); - country.setCountryCode("TR"); - country.setName("Turkiye"); - countryRepo.save(country); - - } - - public void createCitiesFromJson() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/cities.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONArray jsonArray = new JSONArray(data); - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - String cityName = jsonObject.getString("name"); - JSONArray cityCoordinates = jsonObject.getJSONArray("coordinates"); - - City city = new City(); - city.setName(cityName); - city.setCoordinates(cityCoordinates.toString()); - city.setCountry(countryService.findAll().get(0)); - cityRepo.save(city); - } - } - - public void createDistrictFromJson() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/districts.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONArray jsonArray = new JSONArray(data); - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - String districtName = jsonObject.getString("name"); - String cityName = jsonObject.getString("city"); - JSONArray districtCoordinates = jsonObject.getJSONArray("coordinates"); - - City city = cityRepo.findByName(cityName); - District district = new District(); - district.setName(districtName); - district.setCoordinates(districtCoordinates.toString()); - district.setCity(city); - - districtRepo.save(district); - } - } - - void createNeighborhoodsFromJson() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/neighbourhoods.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONArray jsonArray = new JSONArray(data); - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - String cityName = jsonObject.getString("city"); - String districtName = jsonObject.getString("district"); - String neighborhoodName = jsonObject.getString("name"); - double minLong = jsonObject.getDouble("minLong"); - double minLat = jsonObject.getDouble("minLat"); - double maxLong = jsonObject.getDouble("maxLong"); - double maxLat = jsonObject.getDouble("maxLat"); - - City city = cityRepo.findByName(cityName); - if (city != null) { - District district = city.getDistricts().stream() - .filter(d -> d.getName().equals(districtName)) - .findFirst() - .orElse(null); - - if (district != null) { - Neighborhood neighborhood = new Neighborhood(); - neighborhood.setName(neighborhoodName); - neighborhood.setDistrict(district); - neighborhood.setMinLong(minLong); - neighborhood.setMinLat(minLat); - neighborhood.setMaxLong(maxLong); - neighborhood.setMaxLat(maxLat); - - neighborhoodRepo.save(neighborhood); - } - } - } - } - - void createSectorAndSubSectorFromJson() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/SectorsAndSubSectors.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONObject fullJson = new JSONObject(data); - JSONArray jsonArray = fullJson.getJSONArray("Sectors"); - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - Sector sector = new Sector(); - sector.setTag(jsonObject.getString("SectorName")); - sector.setSectorNo(jsonObject.getInt("SectorNo")); - sector.setDescription(jsonObject.getString("SectorName")); - sectorService.save(sector); - - JSONArray subSectorsJson = jsonObject.getJSONArray("SubSectors"); - for (int j = 0; j < subSectorsJson.length(); j++) { - JSONObject subSectorJson = subSectorsJson.getJSONObject(j); - SubSector subSector = new SubSector(); - subSector.setSubSectorNo(subSectorJson.getInt("SubSectorNo")); - subSector.setTag(subSectorJson.getString("Name")); - subSector.setDescription(subSectorJson.getString("Name")); - subSector.setSector(sector); - subSectorService.save(subSector); - } - } - } - - void createGpcReference() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/GpcReferenceNumbers.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONObject fullJson = new JSONObject(data); - JSONArray jsonArray = fullJson.getJSONArray("data"); - - for (int i = 0; i < jsonArray.length(); i++) { - GpcReference gpcReference = new GpcReference(); - gpcReference.setReferenceNumber(jsonArray.getString(i)); - gpcReference.setDescription(jsonArray.getString(i)); - gpcReferenceService.save(gpcReference); - } - } - - void createConsuptionUnit() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/ConsuptionUnits.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONObject fullJson = new JSONObject(data); - JSONArray jsonArray = fullJson.getJSONArray("units"); - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject unitObject = jsonArray.getJSONObject(i); - - String unitName = unitObject.getString("name"); - String unitDescription = unitObject.getString("description"); - - ConsuptionUnit consuptionUnit = new ConsuptionUnit(); - consuptionUnit.setTag(unitName); - consuptionUnit.setDescription(unitDescription); - consuptionUnitService.save(consuptionUnit); - } - } - - void createEmissionSourceConvertUnit() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/EmissionSourceConvertUnit.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONObject fullJson = new JSONObject(data); - JSONArray jsonArray = fullJson.getJSONArray("Data"); - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject obj = jsonArray.getJSONObject(i); - List emissionSourceList = emissionSourceRepo.findByTag(obj.getString("EmissionSource")); - ConsuptionUnit consuptionUnit = consuptionUnitRepo.findByTag(obj.getString("ConsuptionUnit")).get(0); - - for (EmissionSource emissionSource : emissionSourceList) { - if (consuptionUnit != null) { - emissionSource.setConvertUnitCheck(true); - EmissionSource updatedEmissionSource = emissionSourceService.update(emissionSource); - EmissionSourceConvertUnit unit = new EmissionSourceConvertUnit(); - unit.setEmissionSource(updatedEmissionSource); - unit.setUnit(consuptionUnit); - unit.setValue(obj.getDouble("Amount")); - emissionSourceConvertUnitService.save(unit); - } - } - } - } - - void createEmissionScope() { - for (int i = 1; i < 4; i++) { - EmissionScope emissionScope = new EmissionScope(); - emissionScope.setTag("Kapsam-" + i); - emissionScope.setDescription("Kapsam-" + i); - emissionScopeService.save(emissionScope); - } - } - - void createActivitySubUnit() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/ActivitySubUnits.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONObject fullJson = new JSONObject(data); - List tags = Arrays.asList("Konutlar", "Ticari ve Kurumsal Binalar", "İmalat Sanayi ve İnşaat Yapı", - "Tarım, Ormancılık, Balıkçılık Faaliyetleri ve Balık Çiftlikleri", - "Kömür Madenciliği, İşlenmesi, Depolanması ve Taşınmasından Kaynaklanan Kaçak Emisyonlar", - "Karayolu Taşımacılığı", "Havayolu Taşımacılığı", "Demiryolu Taşımacılığı", "Arazi Taşımacılığı", - "Denizyolu Taşımacılığı"); - - for (String tag : tags) { - JSONArray jsonArray = fullJson.getJSONArray(tag); - SubSector subSector = subSectorRepo.findByTag(tag); - for (int i = 0; i < jsonArray.length(); i++) { - ActivitySubUnit activitySubUnit = new ActivitySubUnit(); - activitySubUnit.setTag(jsonArray.getString(i)); - activitySubUnit.setDescription(jsonArray.getString(i)); - activitySubUnit.setSubSector(subSector); - activitySubUnitService.save(activitySubUnit); - } - } - } - - void createEmissionSourceFromJson(String filePath, String[] subSectorTags) throws IOException { - InputStream is = getClass().getResourceAsStream("/" + filePath); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONObject fullJson = new JSONObject(data); - JSONArray jsonArray = fullJson.getJSONArray("Data"); - - String[] co2Tags = { "CO2", "CO2_1", "CO2_2", "CO2_3", "CO2_4" }; - String[] ch4Tags = { "CH4 (CO2e)", "CH4 (CO2e)_1", "CH4 (CO2e)_2", "CH4 (CO2e)_3", "CH4 (CO2e)_4" }; - String[] n20Tags = { "N20 (CO2e)", "N20 (CO2e)_1", "N20 (CO2e)_2", "N20 (CO2e)_3", "N20 (CO2e)_4" }; - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - String tag = jsonObject.getString("Emisyon Kaynağı"); - String scope = jsonObject.optString("scope"); - - for (int j = 0; j < subSectorTags.length; j++) { - EmissionSource emissionSource = new EmissionSource(); - emissionSource.setTag(tag); - emissionSource.setEmissionScope(scope); - emissionSource.setDescription(tag); - emissionSource.setCo2(jsonObject.getDouble(co2Tags[j])); - emissionSource.setCh4(jsonObject.getDouble(ch4Tags[j])); - emissionSource.setN2o(jsonObject.getDouble(n20Tags[j])); - emissionSource.setSubSector(subSectorRepo.findByTag(subSectorTags[j])); - EmissionSource savedEmissionSource = emissionSourceService.save(emissionSource); - - EmissionSourceConvertUnit tjConvertUnit = new EmissionSourceConvertUnit(); - tjConvertUnit.setEmissionSource(savedEmissionSource); - tjConvertUnit.setValue(1.0); - tjConvertUnit.setUnit(consuptionUnitRepo.findByTag("TJ").get(0)); - EmissionSourceConvertUnit savedTjConvertUnit = emissionSourceConvertUnitService.save(tjConvertUnit); - } - } - } - - void createWasteEmissionSourceFromJson(String filePath) throws IOException { - InputStream is = getClass().getResourceAsStream("/" + filePath); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONObject fullJson = new JSONObject(data); - JSONArray jsonArray = fullJson.getJSONArray("Data"); - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - WasteEmissionSourceSupplement wasteEmissionSourceSupplement = new WasteEmissionSourceSupplement(); - wasteEmissionSourceSupplement.setDryWeightCH4(jsonObject.optDouble("dryWeightCH4", 0.0)); - wasteEmissionSourceSupplement.setWetWeightCH4(jsonObject.optDouble("wetWeightCH4", 0.0)); - wasteEmissionSourceSupplement.setDampWeightCH4(jsonObject.optDouble("dampWeightCH4", 0.0)); - wasteEmissionSourceSupplement.setDryWeightN2O(jsonObject.optDouble("dryWeightN2O", 0.0)); - wasteEmissionSourceSupplement.setWetWeightN2O(jsonObject.optDouble("wetWeightN2O", 0.0)); - WasteEmissionSourceSupplement savedWasteEmissionSourceSupplement = wasteEmissionSourceSupplementService - .save(wasteEmissionSourceSupplement); - - String tag = jsonObject.getString("Emisyon Kaynağı"); - EmissionSource emissionSource = new EmissionSource(); - emissionSource.setTag(tag); - emissionSource.setDescription(tag); - emissionSource.setCo2(0.0); - emissionSource.setCh4(0.0); - emissionSource.setN2o(0.0); - emissionSource.setConvertUnitCheck(true); - if (i < 2) { - emissionSource.setSubSector(subSectorRepo.findByTag("Atıkların Biyolojik Arıtılması")); - } else if (i < 10) { - emissionSource.setSubSector(subSectorRepo.findByTag("Atık Su Arıtma ve Deşarjı")); - } else if (i < 14) { - emissionSource.setSubSector(subSectorRepo.findByTag("Yakma ve Açık Yanma")); - } - emissionSource.setWasteEmissionSourceSupplement(savedWasteEmissionSourceSupplement); - emissionSourceService.save(emissionSource); - } - } - - void createSolidWasteTypeFromJson() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/SolidWasteTypes.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONObject fullJson = new JSONObject(data); - JSONArray jsonArray = fullJson.getJSONArray("Data"); - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - String typeName = jsonObject.getString("TypeName"); - double formulaCoefficient = jsonObject.getDouble("FormulaCoefficient"); - - SolidWasteType solidWasteType = new SolidWasteType(); - solidWasteType.setTypeName(typeName); - solidWasteType.setFormulaCoefficient(formulaCoefficient); - solidWasteTypeService.save(solidWasteType); - } - } - - void createMcfTypeFromJson() throws IOException { - InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/MCFType.json"); - String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); - JSONObject fullJson = new JSONObject(data); - JSONArray jsonArray = fullJson.getJSONArray("Data"); - - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - String typeName = jsonObject.getString("TypeName"); - double value = jsonObject.getDouble("Value"); - - McfType mcfType = new McfType(); - mcfType.setTypeName(typeName); - mcfType.setValue(value); - mcfTypeService.save(mcfType); - } - } - - void createDefaultMailInfo() { - MailInfo mailInfo = new MailInfo(); - mailInfo.setHostName(mailHostname); - mailInfo.setSmtpPort(mailSmtpPort); - mailInfo.setEmailAddress(mailAddress); - mailInfo.setEmailPassword(mailPassword); - mailInfo.setMainMail(true); - mailInfoService.save(mailInfo); - } - - public void ensureMissingPermissions() { - // Check if paginate_datacenters_get permission exists - Optional datacenterPermission = permissionService.findByTag("paginate_datacenters_get"); - if (!datacenterPermission.isPresent()) { - // Create the missing permission - Permission paginate_datacenters_get = new Permission(); - paginate_datacenters_get.setTag(PermissionName.PAGINATE_DATACENTERS_GET); - paginate_datacenters_get.setDescription(PermissionDescription.PAGINATE_DATACENTERS_GET); - permissionService.save(paginate_datacenters_get); - } - - // Ensure SUPER_ADMIN has all permissions - Optional superAdminRole = roleRepo.findByTag("SUPER_ADMIN"); - if (superAdminRole.isPresent()) { - Role role = superAdminRole.get(); - List allPermissions = permissionService.findAll(); - role.setPermissions(allPermissions); - roleService.save(role); - } - } - - @Override - public void run(String... args) throws Exception { - if (mailInfoService.findAll().isEmpty()) { - createDefaultMailInfo(); - } - if (consuptionUnitService.findAll().isEmpty()) { - createConsuptionUnit(); - } - if (gpcReferenceService.findAll().isEmpty()) { - createGpcReference(); - } - if (emissionScopeService.findAll().isEmpty()) { - createEmissionScope(); - } - if (sectorService.findAll().isEmpty()) { - createSectorAndSubSectorFromJson(); - } - if (activitySubUnitService.findAll().isEmpty()) { - createActivitySubUnit(); - } - if (emissionSourceService.findAll().isEmpty()) { - createEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceYenilenebilirEnerjiEF.json", - new String[] { "Güneş Enerji Santrali", "Rüzgar Enerji Santrali", "Hidroelektrik Enerji Santrali", - "Biyokütle Enerji Santrali", "Jeotermal Enerji Santrali" }); - createEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceSabitEnerjiEF.json", - new String[] { "Enerji Endüstrileri", "İmalat Sanayi ve İnşaat Yapı", "Ticari ve Kurumsal Binalar", - "Konutlar", "Tarım, Ormancılık, Balıkçılık Faaliyetleri ve Balık Çiftlikleri" }); - createEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceUlasimEF.json", - new String[] { "Karayolu Taşımacılığı", "Denizyolu Taşımacılığı", "Demiryolu Taşımacılığı", - "Arazi Taşımacılığı", "Havayolu Taşımacılığı" }); - createWasteEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceAtikEF.json"); - createEmissionSourceConvertUnit(); - } - if (solidWasteTypeService.findAll().isEmpty()) { - createSolidWasteTypeFromJson(); - } - if (mcfTypeService.findAll().isEmpty()) { - createMcfTypeFromJson(); - } - if (permissionService.findAll().isEmpty()) { - createDefaultPermission(); - } - if (roleService.findAll().isEmpty()) { - createDefaultRole(); - } - // Ensure all permissions are created and assigned to SUPER_ADMIN - ensureMissingPermissions(); - if (organizationService.findAll().isEmpty()) { - createDefaultOrganization(); - } - if (userService.findAll().isEmpty()) { - createDefaultUser(); - } - if (countryService.findAll().isEmpty()) { - createCountry(); - } - if (cityService.findAll().isEmpty()) { - createCitiesFromJson(); - createDefaultArea(); - } - if (districtService.findAll().isEmpty()) { - createDistrictFromJson(); - } - if (neighborhoodService.findAll().isEmpty()) { - createNeighborhoodsFromJson(); - } - } - - void createDefaultArea() { - // Check if default area already exists - List existingAreas = areaService.findAll(); - boolean defaultAreaExists = existingAreas.stream() - .anyMatch(area -> "Turkiye".equals(area.getTag()) && area.isDefaultArea()); - - if (!defaultAreaExists) { - Area defaultArea = new Area(); - defaultArea.setTag("Turkiye"); - defaultArea.setDefaultArea(true); - defaultArea.setDeleted(false); - - // Get all cities to add to the default area - List allCities = cityService.findAll(); - defaultArea.setCities(allCities); - - // Get the Turkey country to add to the default area - List countries = countryService.findAll(); - if (!countries.isEmpty()) { - defaultArea.setCountries(countries); - } - - areaService.save(defaultArea); - } - } +package com.sgs; + +import com.sgs.graphql.activitySubUnit.domain.ActivitySubUnit; +import com.sgs.graphql.activitySubUnit.service.ActivitySubUnitService; +import com.sgs.graphql.area.domain.Area; +import com.sgs.graphql.area.service.AreaService; +import com.sgs.graphql.city.domain.City; +import com.sgs.graphql.city.repo.CityRepo; +import com.sgs.graphql.city.service.CityService; +import com.sgs.graphql.consuptionUnit.domain.ConsuptionUnit; +import com.sgs.graphql.consuptionUnit.repo.ConsuptionUnitRepo; +import com.sgs.graphql.consuptionUnit.service.ConsuptionUnitService; +import com.sgs.graphql.country.domain.Country; +import com.sgs.graphql.country.repo.CountryRepo; +import com.sgs.graphql.country.service.CountryService; +import com.sgs.graphql.district.domain.District; +import com.sgs.graphql.district.repo.DistrictRepo; +import com.sgs.graphql.district.service.DistrictService; +import com.sgs.graphql.emissionScope.domain.EmissionScope; +import com.sgs.graphql.emissionScope.service.EmissionScopeService; +import com.sgs.graphql.emissionSource.domain.EmissionSource; +import com.sgs.graphql.emissionSource.repo.EmissionSourceRepo; +import com.sgs.graphql.emissionSource.service.EmissionSourceService; +import com.sgs.graphql.emissionSourceConvertUnits.domain.EmissionSourceConvertUnit; +import com.sgs.graphql.emissionSourceConvertUnits.service.EmissionSourceConvertUnitService; +import com.sgs.graphql.gpcReference.domain.GpcReference; +import com.sgs.graphql.gpcReference.service.GpcReferenceService; +import com.sgs.graphql.mail.domain.MailInfo; +import com.sgs.graphql.mail.service.MailInfoService; +import com.sgs.graphql.mcfType.domain.McfType; +import com.sgs.graphql.mcfType.service.McfTypeService; +import com.sgs.graphql.neighborhood.domain.Neighborhood; +import com.sgs.graphql.neighborhood.repo.NeighborhoodRepo; +import com.sgs.graphql.neighborhood.service.NeighborhoodService; +import com.sgs.graphql.organization.domain.Organization; +import com.sgs.graphql.organization.service.OrganizationService; +import com.sgs.graphql.permission.domain.Permission; +import com.sgs.graphql.permission.domain.PermissionDescription; +import com.sgs.graphql.permission.domain.PermissionName; +import com.sgs.graphql.permission.service.PermissionService; +import com.sgs.graphql.role.domain.Role; +import com.sgs.graphql.role.repo.RoleRepo; +import com.sgs.graphql.role.service.RoleService; +import com.sgs.graphql.sector.domain.Sector; +import com.sgs.graphql.sector.service.SectorService; +import com.sgs.graphql.solidWasteType.domain.SolidWasteType; +import com.sgs.graphql.solidWasteType.service.SolidWasteTypeService; +import com.sgs.graphql.subSector.domain.SubSector; +import com.sgs.graphql.subSector.repo.SubSectorRepo; +import com.sgs.graphql.subSector.service.SubSectorService; +import com.sgs.graphql.user.domain.User; +import com.sgs.graphql.user.service.UserService; +import com.sgs.graphql.wasteEmissionSource.domain.WasteEmissionSourceSupplement; +import com.sgs.graphql.wasteEmissionSource.service.WasteEmissionSourceSupplementService; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.security.crypto.password.PasswordEncoder; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.*; + +@SpringBootApplication +public class SgsApplication implements CommandLineRunner { + + private final PermissionService permissionService; + private final RoleService roleService; + private final RoleRepo roleRepo; + private final AreaService areaService; + private final NeighborhoodRepo neighborhoodRepo; + private final NeighborhoodService neighborhoodService; + private final CityService cityService; + private final CityRepo cityRepo; + private final DistrictRepo districtRepo; + private final DistrictService districtService; + private final CountryRepo countryRepo; + private final CountryService countryService; + private final OrganizationService organizationService; + private final UserService userService; + private final PasswordEncoder passwordEncoder; + private final SectorService sectorService; + private final SubSectorService subSectorService; + private final EmissionScopeService emissionScopeService; + private final GpcReferenceService gpcReferenceService; + private final SubSectorRepo subSectorRepo; + private final ActivitySubUnitService activitySubUnitService; + private final ConsuptionUnitService consuptionUnitService; + private final EmissionSourceService emissionSourceService; + private final EmissionSourceRepo emissionSourceRepo; + private final ConsuptionUnitRepo consuptionUnitRepo; + private final EmissionSourceConvertUnitService emissionSourceConvertUnitService; + private final SolidWasteTypeService solidWasteTypeService; + private final McfTypeService mcfTypeService; + private final WasteEmissionSourceSupplementService wasteEmissionSourceSupplementService; + private final MailInfoService mailInfoService; + + @Value("${mail.hostname:mail.blc-css.com}") + private String mailHostname; + + @Value("${mail.smtp.port:465}") + private int mailSmtpPort; + + @Value("${mail.address:info@blc-css.com}") + private String mailAddress; + + @Value("${mail.password:}") + private String mailPassword; + + public static void main(String[] args) { + SpringApplication.run(SgsApplication.class, args); + } + + @Autowired + public SgsApplication(RoleService roleService, PermissionService permissionService, RoleRepo roleRepo, + AreaService areaService, NeighborhoodRepo neighborhoodRepo, NeighborhoodService neighborhoodService, + CityService cityService, + CityRepo cityRepo, DistrictRepo districtRepo, DistrictService districtService, CountryRepo countryRepo, + CountryService countryService, OrganizationService organizationService, UserService userService, + PasswordEncoder passwordEncoder, SectorService sectorService, SubSectorService subSectorService, + EmissionScopeService emissionScopeService, GpcReferenceService gpcReferenceService, + SubSectorRepo subSectorRepo, ActivitySubUnitService activitySubUnitService, + ConsuptionUnitService consuptionUnitService, EmissionSourceService emissionSourceService, + EmissionSourceRepo emissionSourceRepo, ConsuptionUnitRepo consuptionUnitRepo, + EmissionSourceConvertUnitService emissionSourceConvertUnitService, + SolidWasteTypeService solidWasteTypeService, McfTypeService mcfTypeService, + WasteEmissionSourceSupplementService wasteEmissionSourceSupplementService, + MailInfoService mailInfoService) { + this.roleService = roleService; + this.permissionService = permissionService; + this.roleRepo = roleRepo; + this.areaService = areaService; + this.neighborhoodRepo = neighborhoodRepo; + this.neighborhoodService = neighborhoodService; + this.cityService = cityService; + this.cityRepo = cityRepo; + this.districtRepo = districtRepo; + this.districtService = districtService; + this.countryRepo = countryRepo; + this.countryService = countryService; + this.organizationService = organizationService; + this.userService = userService; + this.passwordEncoder = passwordEncoder; + this.sectorService = sectorService; + this.subSectorService = subSectorService; + this.emissionScopeService = emissionScopeService; + this.gpcReferenceService = gpcReferenceService; + this.subSectorRepo = subSectorRepo; + this.activitySubUnitService = activitySubUnitService; + this.consuptionUnitService = consuptionUnitService; + this.emissionSourceService = emissionSourceService; + this.emissionSourceRepo = emissionSourceRepo; + this.consuptionUnitRepo = consuptionUnitRepo; + this.emissionSourceConvertUnitService = emissionSourceConvertUnitService; + this.solidWasteTypeService = solidWasteTypeService; + this.mcfTypeService = mcfTypeService; + this.wasteEmissionSourceSupplementService = wasteEmissionSourceSupplementService; + this.mailInfoService = mailInfoService; + } + + void createDefaultOrganization() { + Organization organization = new Organization(); + organization.setTag("BLC"); + organization.setDescription("BLC Communication and Security Systems"); + organizationService.save(organization); + } + + void createDefaultUser() { + Role role = roleRepo.findByTag("SUPER_ADMIN").orElse(null); + List permissions = new ArrayList<>(); + if (!permissionService.findAll().isEmpty()) { + permissions.addAll(permissionService.findAll()); + } + role.setPermissions(permissions); + + // List organizations = organizationRepo.findByTag("BLC"); + + User admin = new User(); + admin.setFirstName("Seda"); + admin.setLastName("Kemikli"); + admin.setEmail("seda.kemikli@blc-css.com"); + admin.setPhoneNumber("11111511"); + admin.setPassword(passwordEncoder.encode("admin")); + // if (organizations.size() == 1) { + // admin.setOrganizations(organizations); + // } + admin.setRole(role); + admin.setStatus("aktif"); + userService.save(admin); + } + + public void createDefaultPermission() { + + Permission activities_get = new Permission(); + activities_get.setTag(PermissionName.ACTIVITIES_GET); + activities_get.setDescription(PermissionDescription.ACTIVITIES_GET); + + Permission paginate_user_histories = new Permission(); + paginate_user_histories.setTag(PermissionName.PAGINATE_USER_HISTORIES); + paginate_user_histories.setDescription(PermissionDescription.PAGINATE_USER_HISTORIES); + + Permission activity_sub_units_get = new Permission(); + activity_sub_units_get.setTag(PermissionName.ACTIVITY_SUB_UNITS_GET); + activity_sub_units_get.setDescription(PermissionDescription.ACTIVITY_SUB_UNITS_GET); + + Permission sub_sectors_get = new Permission(); + sub_sectors_get.setTag(PermissionName.SUB_SECTORS_GET); + sub_sectors_get.setDescription(PermissionDescription.SUB_SECTORS_GET); + + Permission sectors_get = new Permission(); + sectors_get.setTag(PermissionName.SECTORS_GET); + sectors_get.setDescription(PermissionDescription.SECTORS_GET); + + Permission deleted_items = new Permission(); + deleted_items.setTag(PermissionName.GET_DELETED_ITEMS); + deleted_items.setDescription(PermissionDescription.GET_DELETED_ITEMS); + + Permission user_create = new Permission(); + user_create.setTag(PermissionName.USER_CREATE); + user_create.setDescription(PermissionDescription.USER_CREATE); + + Permission user_update = new Permission(); + user_update.setTag(PermissionName.USER_UPDATE); + user_update.setDescription(PermissionDescription.USER_UPDATE); + + Permission user_delete = new Permission(); + user_delete.setTag(PermissionName.USER_DELETE); + user_delete.setDescription(PermissionDescription.USER_DELETE); + + Permission paginate_users_get = new Permission(); + paginate_users_get.setTag(PermissionName.PAGINATE_USERS_GET); + paginate_users_get.setDescription(PermissionDescription.PAGINATE_USERS_GET); + + Permission role_create = new Permission(); + role_create.setTag(PermissionName.ROLE_CREATE); + role_create.setDescription(PermissionDescription.ROLE_CREATE); + + Permission role_update = new Permission(); + role_update.setTag(PermissionName.ROLE_UPDATE); + role_update.setDescription(PermissionDescription.ROLE_UPDATE); + + Permission role_delete = new Permission(); + role_delete.setTag(PermissionName.ROLE_DELETE); + role_delete.setDescription(PermissionDescription.ROLE_DELETE); + + Permission paginate_roles_get = new Permission(); + paginate_roles_get.setTag(PermissionName.PAGINATE_ROLES_GET); + paginate_roles_get.setDescription(PermissionDescription.PAGINATE_ROLES_GET); + + Permission organization_create = new Permission(); + organization_create.setTag(PermissionName.ORGANIZATION_CREATE); + organization_create.setDescription(PermissionDescription.ORGANIZATION_CREATE); + + Permission organization_update = new Permission(); + organization_update.setTag(PermissionName.ORGANIZATION_UPDATE); + organization_update.setDescription(PermissionDescription.ORGANIZATION_UPDATE); + + Permission organization_delete = new Permission(); + organization_delete.setTag(PermissionName.ORGANIZATION_DELETE); + organization_delete.setDescription(PermissionDescription.ORGANIZATION_DELETE); + + Permission paginate_organizations_get = new Permission(); + paginate_organizations_get.setTag(PermissionName.PAGINATE_ORGANIZATIONS_GET); + paginate_organizations_get.setDescription(PermissionDescription.PAGINATE_ORGANIZATIONS_GET); + + Permission area_create = new Permission(); + area_create.setTag(PermissionName.AREA_CREATE); + area_create.setDescription(PermissionDescription.AREA_CREATE); + + Permission area_update = new Permission(); + area_update.setTag(PermissionName.AREA_UPDATE); + area_update.setDescription(PermissionDescription.AREA_UPDATE); + + Permission area_delete = new Permission(); + area_delete.setTag(PermissionName.AREA_DELETE); + area_delete.setDescription(PermissionDescription.AREA_DELETE); + + Permission paginate_areas_get = new Permission(); + paginate_areas_get.setTag(PermissionName.PAGINATE_AREAS_GET); + paginate_areas_get.setDescription(PermissionDescription.PAGINATE_AREAS_GET); + + Permission neighborhood_create = new Permission(); + neighborhood_create.setTag(PermissionName.NEIGHBORHOOD_CREATE); + neighborhood_create.setDescription(PermissionDescription.NEIGHBORHOOD_CREATE); + + Permission neighborhood_update = new Permission(); + neighborhood_update.setTag(PermissionName.NEIGHBORHOOD_UPDATE); + neighborhood_update.setDescription(PermissionDescription.NEIGHBORHOOD_UPDATE); + + Permission neighborhood_delete = new Permission(); + neighborhood_delete.setTag(PermissionName.NEIGHBORHOOD_DELETE); + neighborhood_delete.setDescription(PermissionDescription.NEIGHBORHOOD_DELETE); + + Permission paginate_neighborhoods_get = new Permission(); + paginate_neighborhoods_get.setTag(PermissionName.PAGINATE_NEIGHBORHOODS_GET); + paginate_neighborhoods_get.setDescription(PermissionDescription.PAGINATE_NEIGHBORHOODS_GET); + + Permission paginate_cities_get = new Permission(); + paginate_cities_get.setTag(PermissionName.PAGINATE_CITIES_GET); + paginate_cities_get.setDescription(PermissionDescription.PAGINATE_CITIES_GET); + + Permission paginate_districts_get = new Permission(); + paginate_districts_get.setTag(PermissionName.PAGINATE_DISTRICTS_GET); + paginate_districts_get.setDescription(PermissionDescription.PAGINATE_DISTRICTS_GET); + + Permission paginate_countries_get = new Permission(); + paginate_countries_get.setTag(PermissionName.PAGINATE_COUNTRIES_GET); + paginate_countries_get.setDescription(PermissionDescription.PAGINATE_COUNTRIES_GET); + + Permission emission_source_create = new Permission(); + emission_source_create.setTag(PermissionName.EMISSION_SOURCE_CREATE); + emission_source_create.setDescription(PermissionDescription.EMISSION_SOURCE_CREATE); + + Permission emission_source_update = new Permission(); + emission_source_update.setTag(PermissionName.EMISSION_SOURCE_UPDATE); + emission_source_update.setDescription(PermissionDescription.EMISSION_SOURCE_UPDATE); + + Permission emission_source_delete = new Permission(); + emission_source_delete.setTag(PermissionName.EMISSION_SOURCE_DELETE); + emission_source_delete.setDescription(PermissionDescription.EMISSION_SOURCE_DELETE); + + Permission paginate_emission_sources_get = new Permission(); + paginate_emission_sources_get.setTag(PermissionName.PAGINATE_EMISSION_SOURCES_GET); + paginate_emission_sources_get.setDescription(PermissionDescription.PAGINATE_EMISSION_SOURCES_GET); + + Permission dataset_create = new Permission(); + dataset_create.setTag(PermissionName.DATASET_CREATE); + dataset_create.setDescription(PermissionDescription.DATASET_CREATE); + + Permission dataset_update = new Permission(); + dataset_update.setTag(PermissionName.DATASET_UPDATE); + dataset_update.setDescription(PermissionDescription.DATASET_UPDATE); + + Permission dataset_delete = new Permission(); + dataset_delete.setTag(PermissionName.DATASET_DELETE); + dataset_delete.setDescription(PermissionDescription.DATASET_DELETE); + + Permission paginate_datasets_get = new Permission(); + paginate_datasets_get.setTag(PermissionName.PAGINATE_DATASETS_GET); + paginate_datasets_get.setDescription(PermissionDescription.PAGINATE_DATASETS_GET); + + Permission answer_create = new Permission(); + answer_create.setTag(PermissionName.ANSWER_CREATE); + answer_create.setDescription(PermissionDescription.ANSWER_CREATE); + + Permission answer_update = new Permission(); + answer_update.setTag(PermissionName.ANSWER_UPDATE); + answer_update.setDescription(PermissionDescription.ANSWER_UPDATE); + + Permission answer_delete = new Permission(); + answer_delete.setTag(PermissionName.ANSWER_DELETE); + answer_delete.setDescription(PermissionDescription.ANSWER_DELETE); + + Permission paginate_answers_get = new Permission(); + paginate_answers_get.setTag(PermissionName.PAGINATE_ANSWERS_GET); + paginate_answers_get.setDescription(PermissionDescription.PAGINATE_ANSWERS_GET); + + Permission question_create = new Permission(); + question_create.setTag(PermissionName.QUESTION_CREATE); + question_create.setDescription(PermissionDescription.QUESTION_CREATE); + + Permission question_update = new Permission(); + question_update.setTag(PermissionName.QUESTION_UPDATE); + question_update.setDescription(PermissionDescription.QUESTION_UPDATE); + + Permission question_delete = new Permission(); + question_delete.setTag(PermissionName.QUESTION_DELETE); + question_delete.setDescription(PermissionDescription.QUESTION_DELETE); + + Permission paginate_questions_get = new Permission(); + paginate_questions_get.setTag(PermissionName.PAGINATE_QUESTIONS_GET); + paginate_questions_get.setDescription(PermissionDescription.PAGINATE_QUESTIONS_GET); + + Permission undelete_items = new Permission(); + undelete_items.setTag(PermissionName.UNDELETE_ITEMS); + undelete_items.setDescription(PermissionDescription.UNDELETE_ITEMS); + + Permission published_survey_create = new Permission(); + published_survey_create.setTag(PermissionName.PUBLISHED_SURVEY_CREATE); + published_survey_create.setDescription(PermissionDescription.PUBLISHED_SURVEY_CREATE); + + Permission surveys_get = new Permission(); + surveys_get.setTag(PermissionName.SURVEYS_GET); + surveys_get.setDescription(PermissionDescription.SURVEYS_GET); + + Permission paginate_surveys_get = new Permission(); + paginate_surveys_get.setTag(PermissionName.PAGINATE_SURVEYS_GET); + paginate_surveys_get.setDescription(PermissionDescription.PAGINATE_SURVEYS_GET); + + Permission survey_update = new Permission(); + survey_update.setTag(PermissionName.SURVEY_UPDATE); + survey_update.setDescription(PermissionDescription.SURVEY_UPDATE); + + Permission survey_delete = new Permission(); + survey_delete.setTag(PermissionName.SURVEY_DELETE); + survey_delete.setDescription(PermissionDescription.SURVEY_DELETE); + + Permission survey_add = new Permission(); + survey_add.setTag(PermissionName.SURVEY_ADD); + survey_add.setDescription(PermissionDescription.SURVEY_ADD); + + Permission show_graphics = new Permission(); + show_graphics.setTag(PermissionName.SHOW_GRAPHICS); + show_graphics.setDescription(PermissionDescription.SHOW_GRAPHICS); + + Permission settings_access = new Permission(); + settings_access.setTag(PermissionName.SETTINGS_ACCESS); + settings_access.setDescription(PermissionDescription.SETTINGS_ACCESS); + + Permission data_center_create = new Permission(); + data_center_create.setTag(PermissionName.DATA_CENTER_CREATE); + data_center_create.setDescription(PermissionDescription.DATA_CENTER_CREATE); + + Permission data_center_delete = new Permission(); + data_center_delete.setTag(PermissionName.DATA_CENTER_DELETE); + data_center_delete.setDescription(PermissionDescription.DATA_CENTER_DELETE); + + Permission data_center_update = new Permission(); + data_center_update.setTag(PermissionName.DATA_CENTER_UPDATE); + data_center_update.setDescription(PermissionDescription.DATA_CENTER_UPDATE); + + Permission data_center_read = new Permission(); + data_center_read.setTag(PermissionName.DATA_CENTER_READ); + data_center_read.setDescription(PermissionDescription.DATA_CENTER_READ); + + Permission paginate_datacenters_get = new Permission(); + paginate_datacenters_get.setTag(PermissionName.PAGINATE_DATACENTERS_GET); + paginate_datacenters_get.setDescription(PermissionDescription.PAGINATE_DATACENTERS_GET); + + permissionService.saveAll(List.of( + show_graphics, activities_get, paginate_user_histories, activity_sub_units_get, sub_sectors_get, + sectors_get, deleted_items, undelete_items, user_create, user_update, user_delete, paginate_users_get, + role_create, role_update, role_delete, paginate_roles_get, + organization_create, organization_update, organization_delete, paginate_organizations_get, + area_create, area_update, area_delete, paginate_areas_get, + neighborhood_create, neighborhood_update, neighborhood_delete, paginate_neighborhoods_get, + paginate_districts_get, + paginate_cities_get, + paginate_countries_get, + emission_source_create, emission_source_update, emission_source_delete, paginate_emission_sources_get, + dataset_create, dataset_update, dataset_delete, paginate_datasets_get, + answer_create, answer_delete, answer_update, paginate_answers_get, + question_create, question_delete, question_update, paginate_questions_get, + published_survey_create, surveys_get, paginate_surveys_get, + survey_add, survey_delete, survey_update, settings_access, data_center_create, data_center_delete, + data_center_update, data_center_read, paginate_datacenters_get)); + } + + public void createDefaultRole() { + Role role = new Role(); + role.setTag("SUPER_ADMIN"); + role.setPermissions(permissionService.findAll()); + roleService.save(role); + } + + void createCountry() { + Country country = new Country(); + country.setCountryCode("TR"); + country.setName("Turkiye"); + countryRepo.save(country); + + } + + public void createCitiesFromJson() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/cities.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONArray jsonArray = new JSONArray(data); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String cityName = jsonObject.getString("name"); + JSONArray cityCoordinates = jsonObject.getJSONArray("coordinates"); + + City city = new City(); + city.setName(cityName); + city.setCoordinates(cityCoordinates.toString()); + city.setCountry(countryService.findAll().get(0)); + cityRepo.save(city); + } + } + + public void createDistrictFromJson() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/districts.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONArray jsonArray = new JSONArray(data); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String districtName = jsonObject.getString("name"); + String cityName = jsonObject.getString("city"); + JSONArray districtCoordinates = jsonObject.getJSONArray("coordinates"); + + City city = cityRepo.findByName(cityName); + District district = new District(); + district.setName(districtName); + district.setCoordinates(districtCoordinates.toString()); + district.setCity(city); + + districtRepo.save(district); + } + } + + void createNeighborhoodsFromJson() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/neighbourhoods.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONArray jsonArray = new JSONArray(data); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String cityName = jsonObject.getString("city"); + String districtName = jsonObject.getString("district"); + String neighborhoodName = jsonObject.getString("name"); + double minLong = jsonObject.getDouble("minLong"); + double minLat = jsonObject.getDouble("minLat"); + double maxLong = jsonObject.getDouble("maxLong"); + double maxLat = jsonObject.getDouble("maxLat"); + + City city = cityRepo.findByName(cityName); + if (city != null) { + District district = city.getDistricts().stream() + .filter(d -> d.getName().equals(districtName)) + .findFirst() + .orElse(null); + + if (district != null) { + Neighborhood neighborhood = new Neighborhood(); + neighborhood.setName(neighborhoodName); + neighborhood.setDistrict(district); + neighborhood.setMinLong(minLong); + neighborhood.setMinLat(minLat); + neighborhood.setMaxLong(maxLong); + neighborhood.setMaxLat(maxLat); + + neighborhoodRepo.save(neighborhood); + } + } + } + } + + void createSectorAndSubSectorFromJson() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/SectorsAndSubSectors.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject fullJson = new JSONObject(data); + JSONArray jsonArray = fullJson.getJSONArray("Sectors"); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + Sector sector = new Sector(); + sector.setTag(jsonObject.getString("SectorName")); + sector.setSectorNo(jsonObject.getInt("SectorNo")); + sector.setDescription(jsonObject.getString("SectorName")); + sectorService.save(sector); + + JSONArray subSectorsJson = jsonObject.getJSONArray("SubSectors"); + for (int j = 0; j < subSectorsJson.length(); j++) { + JSONObject subSectorJson = subSectorsJson.getJSONObject(j); + SubSector subSector = new SubSector(); + subSector.setSubSectorNo(subSectorJson.getInt("SubSectorNo")); + subSector.setTag(subSectorJson.getString("Name")); + subSector.setDescription(subSectorJson.getString("Name")); + subSector.setSector(sector); + subSectorService.save(subSector); + } + } + } + + void createGpcReference() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/GpcReferenceNumbers.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject fullJson = new JSONObject(data); + JSONArray jsonArray = fullJson.getJSONArray("data"); + + for (int i = 0; i < jsonArray.length(); i++) { + GpcReference gpcReference = new GpcReference(); + gpcReference.setReferenceNumber(jsonArray.getString(i)); + gpcReference.setDescription(jsonArray.getString(i)); + gpcReferenceService.save(gpcReference); + } + } + + void createConsuptionUnit() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/ConsuptionUnits.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject fullJson = new JSONObject(data); + JSONArray jsonArray = fullJson.getJSONArray("units"); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject unitObject = jsonArray.getJSONObject(i); + + String unitName = unitObject.getString("name"); + String unitDescription = unitObject.getString("description"); + + ConsuptionUnit consuptionUnit = new ConsuptionUnit(); + consuptionUnit.setTag(unitName); + consuptionUnit.setDescription(unitDescription); + consuptionUnitService.save(consuptionUnit); + } + } + + void createEmissionSourceConvertUnit() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/EmissionSourceConvertUnit.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject fullJson = new JSONObject(data); + JSONArray jsonArray = fullJson.getJSONArray("Data"); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject obj = jsonArray.getJSONObject(i); + List emissionSourceList = emissionSourceRepo.findByTag(obj.getString("EmissionSource")); + ConsuptionUnit consuptionUnit = consuptionUnitRepo.findByTag(obj.getString("ConsuptionUnit")).get(0); + + for (EmissionSource emissionSource : emissionSourceList) { + if (consuptionUnit != null) { + emissionSource.setConvertUnitCheck(true); + EmissionSource updatedEmissionSource = emissionSourceService.update(emissionSource); + EmissionSourceConvertUnit unit = new EmissionSourceConvertUnit(); + unit.setEmissionSource(updatedEmissionSource); + unit.setUnit(consuptionUnit); + unit.setValue(obj.getDouble("Amount")); + emissionSourceConvertUnitService.save(unit); + } + } + } + } + + void createEmissionScope() { + for (int i = 1; i < 4; i++) { + EmissionScope emissionScope = new EmissionScope(); + emissionScope.setTag("Kapsam-" + i); + emissionScope.setDescription("Kapsam-" + i); + emissionScopeService.save(emissionScope); + } + } + + void createActivitySubUnit() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/ActivitySubUnits.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject fullJson = new JSONObject(data); + List tags = Arrays.asList("Konutlar", "Ticari ve Kurumsal Binalar", "İmalat Sanayi ve İnşaat Yapı", + "Tarım, Ormancılık, Balıkçılık Faaliyetleri ve Balık Çiftlikleri", + "Kömür Madenciliği, İşlenmesi, Depolanması ve Taşınmasından Kaynaklanan Kaçak Emisyonlar", + "Karayolu Taşımacılığı", "Havayolu Taşımacılığı", "Demiryolu Taşımacılığı", "Arazi Taşımacılığı", + "Denizyolu Taşımacılığı"); + + for (String tag : tags) { + JSONArray jsonArray = fullJson.getJSONArray(tag); + SubSector subSector = subSectorRepo.findByTag(tag); + for (int i = 0; i < jsonArray.length(); i++) { + ActivitySubUnit activitySubUnit = new ActivitySubUnit(); + activitySubUnit.setTag(jsonArray.getString(i)); + activitySubUnit.setDescription(jsonArray.getString(i)); + activitySubUnit.setSubSector(subSector); + activitySubUnitService.save(activitySubUnit); + } + } + } + + void createEmissionSourceFromJson(String filePath, String[] subSectorTags) throws IOException { + InputStream is = getClass().getResourceAsStream("/" + filePath); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject fullJson = new JSONObject(data); + JSONArray jsonArray = fullJson.getJSONArray("Data"); + + String[] co2Tags = { "CO2", "CO2_1", "CO2_2", "CO2_3", "CO2_4" }; + String[] ch4Tags = { "CH4 (CO2e)", "CH4 (CO2e)_1", "CH4 (CO2e)_2", "CH4 (CO2e)_3", "CH4 (CO2e)_4" }; + String[] n20Tags = { "N20 (CO2e)", "N20 (CO2e)_1", "N20 (CO2e)_2", "N20 (CO2e)_3", "N20 (CO2e)_4" }; + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String tag = jsonObject.getString("Emisyon Kaynağı"); + String scope = jsonObject.optString("scope"); + + for (int j = 0; j < subSectorTags.length; j++) { + EmissionSource emissionSource = new EmissionSource(); + emissionSource.setTag(tag); + emissionSource.setEmissionScope(scope); + emissionSource.setDescription(tag); + emissionSource.setCo2(jsonObject.getDouble(co2Tags[j])); + emissionSource.setCh4(jsonObject.getDouble(ch4Tags[j])); + emissionSource.setN2o(jsonObject.getDouble(n20Tags[j])); + emissionSource.setSubSector(subSectorRepo.findByTag(subSectorTags[j])); + EmissionSource savedEmissionSource = emissionSourceService.save(emissionSource); + + EmissionSourceConvertUnit tjConvertUnit = new EmissionSourceConvertUnit(); + tjConvertUnit.setEmissionSource(savedEmissionSource); + tjConvertUnit.setValue(1.0); + tjConvertUnit.setUnit(consuptionUnitRepo.findByTag("TJ").get(0)); + EmissionSourceConvertUnit savedTjConvertUnit = emissionSourceConvertUnitService.save(tjConvertUnit); + } + } + } + + void createWasteEmissionSourceFromJson(String filePath) throws IOException { + InputStream is = getClass().getResourceAsStream("/" + filePath); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject fullJson = new JSONObject(data); + JSONArray jsonArray = fullJson.getJSONArray("Data"); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + WasteEmissionSourceSupplement wasteEmissionSourceSupplement = new WasteEmissionSourceSupplement(); + wasteEmissionSourceSupplement.setDryWeightCH4(jsonObject.optDouble("dryWeightCH4", 0.0)); + wasteEmissionSourceSupplement.setWetWeightCH4(jsonObject.optDouble("wetWeightCH4", 0.0)); + wasteEmissionSourceSupplement.setDampWeightCH4(jsonObject.optDouble("dampWeightCH4", 0.0)); + wasteEmissionSourceSupplement.setDryWeightN2O(jsonObject.optDouble("dryWeightN2O", 0.0)); + wasteEmissionSourceSupplement.setWetWeightN2O(jsonObject.optDouble("wetWeightN2O", 0.0)); + WasteEmissionSourceSupplement savedWasteEmissionSourceSupplement = wasteEmissionSourceSupplementService + .save(wasteEmissionSourceSupplement); + + String tag = jsonObject.getString("Emisyon Kaynağı"); + EmissionSource emissionSource = new EmissionSource(); + emissionSource.setTag(tag); + emissionSource.setDescription(tag); + emissionSource.setCo2(0.0); + emissionSource.setCh4(0.0); + emissionSource.setN2o(0.0); + emissionSource.setConvertUnitCheck(true); + if (i < 2) { + emissionSource.setSubSector(subSectorRepo.findByTag("Atıkların Biyolojik Arıtılması")); + } else if (i < 10) { + emissionSource.setSubSector(subSectorRepo.findByTag("Atık Su Arıtma ve Deşarjı")); + } else if (i < 14) { + emissionSource.setSubSector(subSectorRepo.findByTag("Yakma ve Açık Yanma")); + } + emissionSource.setWasteEmissionSourceSupplement(savedWasteEmissionSourceSupplement); + emissionSourceService.save(emissionSource); + } + } + + void createSolidWasteTypeFromJson() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/SolidWasteTypes.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject fullJson = new JSONObject(data); + JSONArray jsonArray = fullJson.getJSONArray("Data"); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String typeName = jsonObject.getString("TypeName"); + double formulaCoefficient = jsonObject.getDouble("FormulaCoefficient"); + + SolidWasteType solidWasteType = new SolidWasteType(); + solidWasteType.setTypeName(typeName); + solidWasteType.setFormulaCoefficient(formulaCoefficient); + solidWasteTypeService.save(solidWasteType); + } + } + + void createMcfTypeFromJson() throws IOException { + InputStream is = getClass().getResourceAsStream("/XDataSetModuleFiles/MCFType.json"); + String data = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject fullJson = new JSONObject(data); + JSONArray jsonArray = fullJson.getJSONArray("Data"); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String typeName = jsonObject.getString("TypeName"); + double value = jsonObject.getDouble("Value"); + + McfType mcfType = new McfType(); + mcfType.setTypeName(typeName); + mcfType.setValue(value); + mcfTypeService.save(mcfType); + } + } + + void createDefaultMailInfo() { + MailInfo mailInfo = new MailInfo(); + mailInfo.setHostName(mailHostname); + mailInfo.setSmtpPort(mailSmtpPort); + mailInfo.setEmailAddress(mailAddress); + mailInfo.setEmailPassword(mailPassword); + mailInfo.setMainMail(true); + mailInfoService.save(mailInfo); + } + + public void ensureMissingPermissions() { + // Check if paginate_datacenters_get permission exists + Optional datacenterPermission = permissionService.findByTag("paginate_datacenters_get"); + if (!datacenterPermission.isPresent()) { + // Create the missing permission + Permission paginate_datacenters_get = new Permission(); + paginate_datacenters_get.setTag(PermissionName.PAGINATE_DATACENTERS_GET); + paginate_datacenters_get.setDescription(PermissionDescription.PAGINATE_DATACENTERS_GET); + permissionService.save(paginate_datacenters_get); + } + + // Ensure SUPER_ADMIN has all permissions + Optional superAdminRole = roleRepo.findByTag("SUPER_ADMIN"); + if (superAdminRole.isPresent()) { + Role role = superAdminRole.get(); + List allPermissions = permissionService.findAll(); + role.setPermissions(allPermissions); + roleService.save(role); + } + } + + @Override + public void run(String... args) throws Exception { + if (mailInfoService.findAll().isEmpty()) { + createDefaultMailInfo(); + } + if (consuptionUnitService.findAll().isEmpty()) { + createConsuptionUnit(); + } + if (gpcReferenceService.findAll().isEmpty()) { + createGpcReference(); + } + if (emissionScopeService.findAll().isEmpty()) { + createEmissionScope(); + } + if (sectorService.findAll().isEmpty()) { + createSectorAndSubSectorFromJson(); + } + if (activitySubUnitService.findAll().isEmpty()) { + createActivitySubUnit(); + } + if (emissionSourceService.findAll().isEmpty()) { + createEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceYenilenebilirEnerjiEF.json", + new String[] { "Güneş Enerji Santrali", "Rüzgar Enerji Santrali", "Hidroelektrik Enerji Santrali", + "Biyokütle Enerji Santrali", "Jeotermal Enerji Santrali" }); + createEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceSabitEnerjiEF.json", + new String[] { "Enerji Endüstrileri", "İmalat Sanayi ve İnşaat Yapı", "Ticari ve Kurumsal Binalar", + "Konutlar", "Tarım, Ormancılık, Balıkçılık Faaliyetleri ve Balık Çiftlikleri" }); + createEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceUlasimEF.json", + new String[] { "Karayolu Taşımacılığı", "Denizyolu Taşımacılığı", "Demiryolu Taşımacılığı", + "Arazi Taşımacılığı", "Havayolu Taşımacılığı" }); + createWasteEmissionSourceFromJson("XDataSetModuleFiles/EmissionSourceAtikEF.json"); + createEmissionSourceConvertUnit(); + } + if (solidWasteTypeService.findAll().isEmpty()) { + createSolidWasteTypeFromJson(); + } + if (mcfTypeService.findAll().isEmpty()) { + createMcfTypeFromJson(); + } + if (permissionService.findAll().isEmpty()) { + createDefaultPermission(); + } + if (roleService.findAll().isEmpty()) { + createDefaultRole(); + } + // Ensure all permissions are created and assigned to SUPER_ADMIN + ensureMissingPermissions(); + if (organizationService.findAll().isEmpty()) { + createDefaultOrganization(); + } + if (userService.findAll().isEmpty()) { + createDefaultUser(); + } + if (countryService.findAll().isEmpty()) { + createCountry(); + } + if (cityService.findAll().isEmpty()) { + createCitiesFromJson(); + createDefaultArea(); + } + if (districtService.findAll().isEmpty()) { + createDistrictFromJson(); + } + if (neighborhoodService.findAll().isEmpty()) { + createNeighborhoodsFromJson(); + } + } + + void createDefaultArea() { + // Check if default area already exists + List existingAreas = areaService.findAll(); + boolean defaultAreaExists = existingAreas.stream() + .anyMatch(area -> "Turkiye".equals(area.getTag()) && area.isDefaultArea()); + + if (!defaultAreaExists) { + Area defaultArea = new Area(); + defaultArea.setTag("Turkiye"); + defaultArea.setDefaultArea(true); + defaultArea.setDeleted(false); + + // Get all cities to add to the default area + List allCities = cityService.findAll(); + defaultArea.setCities(allCities); + + // Get the Turkey country to add to the default area + List countries = countryService.findAll(); + if (!countries.isEmpty()) { + defaultArea.setCountries(countries); + } + + areaService.save(defaultArea); + } + } } \ No newline at end of file