/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2013, MPL CodeInside http://codeinside.ru */ package ru.codeinside.gws3564c.enclosure.grp; import ru.codeinside.gws.api.ExchangeContext; import ru.grp.*; import java.util.Date; import static ru.grp.RequestGRP.Request.RequiredData; import static ru.grp.RequestGRP.Request.RequiredData.RequiredDataSubject.ExtractSubject; /** * Выписка из реестра о правах отдельного лица на имевшиеся (имеющиеся) у него объекты недвижимого имущества */ public class SubjectRightsHistoryEnclosureBuilder extends SubjectRightsEnclosureBuilder { public SubjectRightsHistoryEnclosureBuilder(ExchangeContext ctx) { super(ctx); } @Override protected RequiredData createRequiredData() { RequiredData requiredData = new RequiredData(); RequiredData.RequiredDataSubject dataSubject = new RequiredData.RequiredDataSubject(); ExtractSubject extractSubject = new ExtractSubject(); dataSubject.setExtractSubject(extractSubject); requiredData.setRequiredDataSubject(dataSubject); extractSubject.getOwners().add(getOwnerFromContext()); extractSubject.setDataPeriod(getRequestPeriodFromContext()); extractSubject.setRealtyType(getRealtyTypeFromContext()); extractSubject.setTerritory(getTerritoryDataFromContext()); return requiredData; } private ExtractSubject.Territory getTerritoryDataFromContext() { ExtractSubject.Territory territory = new ExtractSubject.Territory(); long countRegions = ctx.getLongFromContext("territory"); if (countRegions == 0L) { territory.setTerritoryRussia(true); return territory; } final ExtractSubject.Territory.Regions regions = new ExtractSubject.Territory.Regions(); for (int idx = 1; idx <= countRegions; idx++) { regions.getRegion().add(ctx.getStrFromContext("territoryCode_" + idx)); } territory.setRegions(regions); return territory; } private ExtractSubject.RealtyType getRealtyTypeFromContext() { ExtractSubject.RealtyType realtyType = new ExtractSubject.RealtyType(); RealtyKind realtyKind = RealtyKind.valueOf(ctx.getStrFromContext("objectKind")); switch (realtyKind) { case ALL: realtyType.setRealtyTypeAll(true); break; case PARCEL: realtyType.getRealtyTypeText().add(getParcelSubjectData()); break; case ROOM: realtyType.getRealtyTypeText().add(getRoomSubjectData()); break; case BUILDING: realtyType.getRealtyTypeText().add(getBuildingSubjectData()); break; case OTHER: realtyType.getRealtyTypeText().add(getOtherSubjectData()); } return realtyType; } private TExtractSubjectObjectType getOtherSubjectData() { TExtractSubjectObjectType objectType = new TExtractSubjectObjectType(); objectType.setObjKind(ctx.getStrFromContext("objectOtherKind")); return objectType; } private TExtractSubjectObjectType getBuildingSubjectData() { TExtractSubjectObjectType objectType = new TExtractSubjectObjectType(); TExtractBuilding building = new TExtractBuilding(); fillBuildingFromContext(building, ""); objectType.setBuilding(building); return objectType; } private TExtractSubjectObjectType getRoomSubjectData() { TExtractSubjectObjectType objectType = new TExtractSubjectObjectType(); TExtractRoom room = new TExtractRoom(); fillRoomDataFromContext(room, ""); objectType.setRoom(room); return objectType; } private TExtractSubjectObjectType getParcelSubjectData() { TExtractSubjectObjectType subjectObjectType = new TExtractSubjectObjectType(); TExtractParcel parcel = new TExtractParcel(); parcel.setCategory(ctx.getStrFromContext("parcelCategory")); subjectObjectType.setParcel(parcel); return subjectObjectType; } enum RealtyKind { ALL, PARCEL, ROOM, OTHER, BUILDING } private ExtractSubject.DataPeriod getRequestPeriodFromContext() { ExtractSubject.DataPeriod dataPeriod = new ExtractSubject.DataPeriod(); Date startDate = ctx.getDateFromContext("request_interval_start"); Date endDate = ctx.getDateFromContext("request_interval_end"); if (startDate != null && endDate != null) { ExtractSubject.DataPeriod.Interval interval = new ExtractSubject.DataPeriod.Interval(); interval.setDateEnd(date(endDate)); interval.setDateStart(date(startDate)); dataPeriod.setInterval(interval); } else if (startDate != null) { dataPeriod.setDateStart(date(startDate)); } else if (endDate != null) { dataPeriod.setDateEnd(date(endDate)); } else { dataPeriod.setDate(date(new Date())); } return dataPeriod; } }