package server.mcsv1002; import ru.codeinside.gws.api.ReceiptContext; import server.mcsv1002.context.TypedContext; import server.mcsv1002.response.HousebookExtractionResponse; import server.mcsv1002.response.Owner; import server.mcsv1002.response.RegisteredPerson; import java.util.LinkedList; import java.util.List; public class ResponseExtractor { public HousebookExtractionResponse convertToResponseObject(ReceiptContext ctx) throws DeclarerException { TypedContext context = new TypedContext(ctx, ""); if (!context.hasVariableInContext("is_order_rejected")) { throw new DeclarerException(4, "Заявка отклонена"); } if (!context.getBoolean("request_is_correct")) { throw new DeclarerException(4, context.getString("comment")); } HousebookExtractionResponse response = new HousebookExtractionResponse(); fillRequestObjectData(response, context); response.getOwner().addAll(fillOwnerData(context)); response.getRegisteredPerson().addAll(fillRegisteredPerson(context)); response.setComment(context.getString("comment")); return response; } private void fillRequestObjectData(HousebookExtractionResponse response, TypedContext ctx) { response.setRegionCode(ctx.getString("regionCode")); response.setObjectDistrict(ctx.getString("objectDistrict")); response.setObjectCity(ctx.getString("objectCity")); response.setObjectTown(ctx.getString("objectTown")); response.setObjectStreet(ctx.getString("objectStreet")); response.setObjectHouse(ctx.getString("objectHouse")); response.setObjectCorpus(ctx.getString("objectCorpus")); response.setObjectBuilding(ctx.getString("objectBuilding")); response.setObjectFlat(ctx.getString("objectFlat")); response.setObjectCadastrNumber(ctx.getString("objectCadastrNumber")); response.setObjectConditNumber(ctx.getString("objectConditNumber")); } private List<RegisteredPerson> fillRegisteredPerson(TypedContext context) { final LinkedList<RegisteredPerson> persons = new LinkedList<RegisteredPerson>(); long countRegisteredPerson = context.getLong("person"); for (long idx = 0; idx < countRegisteredPerson; idx++) { persons.add(createPerson(context, idx + 1)); } return persons; } private RegisteredPerson createPerson(TypedContext context, long suffix) { final RegisteredPerson person = new RegisteredPerson(); person.setLastName(context.getString("person_last_name_" + suffix)); person.setFirstName(context.getString("person_first_name_" + suffix)); person.setGivenName(context.getString("person_given_name_" + suffix)); person.setBirthPlace(context.getString("person_birth_place_" + suffix)); person.setBirthday(context.getCalendar("person_birthday_" + suffix)); person.setDocType(context.getString("person_doc_type_" + suffix)); person.setDocSerie(context.getString("person_doc_series_" + suffix)); person.setDocNumber(context.getString("person_doc_number_" + suffix)); person.setDocIssueDate(context.getCalendar("person_doc_issue_date_" + suffix)); person.setDocIssuer(context.getString("person_doc_issuer_" + suffix)); person.setCheckinDate(context.getCalendar("person_checkin_date_" + suffix)); person.setCheckoutDate(context.getCalendar("person_checkout_date_" + suffix)); return person; } private List<Owner> fillOwnerData(TypedContext context) { List<Owner> result = new LinkedList<Owner>(); long countOwners = context.getLong("owners"); for (long idx = 0; idx < countOwners; idx++) { result.add(createOwner(context, idx + 1)); } return result; } private Owner createOwner(TypedContext context, long suffix) { final Owner owner = new Owner(); owner.setFirstName(context.getString("owner_first_name_" + suffix)); owner.setLastName(context.getString("owner_last_name_" + suffix)); owner.setGivenName(context.getString("owner_given_name_" + suffix)); owner.setShare(context.getString("owner_share_" + suffix)); owner.setSince(context.getCalendar("owner_since_" + suffix)); owner.setType(context.getString("owner_type_" + suffix)); owner.setSize(context.getString("owner_size_" + suffix)); return owner; } }