| /* |
| * Copyright 2007 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.sample.dynatablerf.domain; |
| |
| import static com.google.gwt.sample.dynatablerf.shared.DynaTableRequestFactory.SchoolCalendarRequest.ALL_DAYS; |
| |
| import com.google.gwt.sample.dynatablerf.server.SchoolCalendarService; |
| |
| import java.util.List; |
| |
| import javax.validation.constraints.DecimalMin; |
| import javax.validation.constraints.NotNull; |
| import javax.validation.constraints.Size; |
| |
| /** |
| * Hold relevant data for Person. |
| */ |
| public class Person { |
| /** |
| * New instances could be created on the client, but it's a better demo to |
| * send back a Person with a bunch of dummy data. |
| */ |
| public static Person createPerson() { |
| return SchoolCalendarService.createPerson(); |
| } |
| |
| /** |
| * The RequestFactory requires a static finder method for each proxied type. |
| * Soon it should allow you to customize how instances are found. |
| */ |
| public static Person findPerson(String id) { |
| /* |
| * TODO At the moment requestFactory requires a finder method per type It |
| * should get more flexible soon. |
| */ |
| return SchoolCalendarService.findPerson(id); |
| } |
| |
| @NotNull |
| private Address address = new Address(); |
| |
| @NotNull |
| private Schedule classSchedule = new Schedule(); |
| |
| @NotNull |
| private String description = "DESC"; |
| |
| private Person mentor; |
| |
| @NotNull |
| @Size(min = 2, message = "Persons aren't just characters") |
| private String name; |
| |
| // May be null if the person is newly-created |
| private String id; |
| |
| @NotNull |
| @DecimalMin("0") |
| private Integer version = 0; |
| |
| private String note; |
| |
| private List<Boolean> daysFilters = ALL_DAYS; |
| |
| public Person() { |
| } |
| |
| protected Person(Person copyFrom) { |
| copyFrom(copyFrom); |
| } |
| |
| public void copyFrom(Person copyFrom) { |
| address.copyFrom(copyFrom.address); |
| classSchedule = copyFrom.classSchedule; |
| description = copyFrom.description; |
| name = copyFrom.name; |
| mentor = copyFrom.mentor; |
| id = copyFrom.id; |
| version = copyFrom.version; |
| note = copyFrom.note; |
| } |
| |
| public Address getAddress() { |
| return address; |
| } |
| |
| public Schedule getClassSchedule() { |
| return classSchedule; |
| } |
| |
| public String getDescription() { |
| return description; |
| } |
| |
| /** |
| * The RequestFactory requires a Long id property for each proxied type. |
| * <p> |
| * The requirement for some kind of id object with proper hash / equals |
| * semantics is not going away, but it should become possible to use types |
| * other than Long, and properties other than "id". |
| */ |
| public String getId() { |
| return id; |
| } |
| |
| public Person getMentor() { |
| return mentor; |
| } |
| |
| public String getName() { |
| return name; |
| } |
| |
| public String getNote() { |
| return note; |
| } |
| |
| public String getScheduleDescription() { |
| return getScheduleWithFilter(daysFilters); |
| } |
| |
| public String getScheduleWithFilter(List<Boolean> daysFilter) { |
| return classSchedule.getDescription(daysFilter); |
| } |
| |
| /** |
| * The RequestFactory requires an Integer version property for each proxied |
| * type, but makes no good use of it. This requirement will be removed soon. |
| */ |
| public Integer getVersion() { |
| return version; |
| } |
| |
| public Person makeCopy() { |
| return new Person(this); |
| } |
| |
| public void persist() { |
| SchoolCalendarService.persist(this); |
| } |
| |
| public void setAddress(Address address) { |
| this.address = address; |
| } |
| |
| public void setClassSchedule(Schedule schedule) { |
| this.classSchedule = schedule; |
| } |
| |
| public void setDaysFilter(List<Boolean> daysFilter) { |
| assert daysFilter.size() == this.daysFilters.size(); |
| this.daysFilters = daysFilter; |
| } |
| |
| public void setDescription(String description) { |
| this.description = description; |
| } |
| |
| public void setId(String id) { |
| this.id = id; |
| } |
| |
| public void setMentor(Person mentor) { |
| this.mentor = mentor; |
| } |
| |
| public void setName(String name) { |
| this.name = name; |
| } |
| |
| public void setNote(String note) { |
| this.note = note; |
| } |
| |
| public void setVersion(Integer version) { |
| this.version = version; |
| } |
| |
| @Override |
| public String toString() { |
| return "Person [description=" + description + ", id=" + id + ", name=" |
| + name + ", version=" + version + "]"; |
| } |
| } |