/* * Copyright 2012 the original author or authors. * * 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.github.carlomicieli.rest.representations; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.EntityTag; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response.Status; import org.apache.commons.lang3.builder.HashCodeBuilder; import com.github.carlomicieli.entities.Scale; /** * * @author Carlo Micieli * */ public class ScaleRepresentation { private final Scale scale; /** * Creates new <em>Scale</em> representation. */ public ScaleRepresentation() { this.scale = new Scale(); } /** * Creates new <em>Scale</em> representation. * @param scale the inner scale entity object. */ public ScaleRepresentation(Scale scale) { if( scale==null ) throw new WebApplicationException(Status.NOT_FOUND); this.scale = scale; } /** * Creates new <em>Scale</em> representation. * @param formValues the form values. * @param formValues */ public ScaleRepresentation(MultivaluedMap<String, String> formValues) { this(); long id = 0; try { id = Long.parseLong(formValues.getFirst("id")); } catch( NumberFormatException ex ) {} int ratio = 0; try { ratio = Integer.parseInt(formValues.getFirst("ratio")); } catch( NumberFormatException ex ) { throw new WebApplicationException(Status.BAD_REQUEST); } boolean isNarrow = Boolean.parseBoolean(formValues.getFirst("narrow")); setId(id); setRatio(ratio); setName(formValues.getFirst("name")); setNarrow(isNarrow); } /** * Returns the inner scale entity object. * @return the entity object. */ public Scale getInner() { return this.scale; } /** * Returns the unique id for the <em>Scale</em>. * @return the unique id. */ public long getId() { return getInner().getId(); } /** * Sets the unique id for the <em>Scale</em>. * @param id the unique id. */ public void setId(long id) { getInner().setId(id); } /** * Returns the scale name. * @return the scale name. */ public String getName() { return getInner().getName(); } /** * Sets the scale name. * @param name the scale name. */ public void setName(String name) { getInner().setName(name); } /** * Returns the ratio of a linear dimension of the * model to the same dimension of the original. * @return the scale ratio. */ public int getRatio() { return getInner().getRatio(); } /** * Sets the ratio of a linear dimension of the * model to the same dimension of the original. * @param ratio the scale ratio. */ public void setRatio(int ratio) { getInner().setRatio(ratio); } /** * Returns whether has track gauge * narrower than the standard gauge railways or not. * <p> * <em>true</em> if the scale is narrow, * <em>false</em> otherwise. * </p> * * @return the narrow flag value. */ public boolean isNarrow() { return getInner().isNarrow(); } /** * Sets whether has track gauge * narrower than the standard gauge railways or not. * @param isNarrow the narrow flag value. */ public void setNarrow(boolean isNarrow) { getInner().setNarrow(isNarrow); } /** * Compute the ETag for the current player representation. * @return the ETag value. */ public EntityTag tag() { return new EntityTag(Long.toHexString(this.hashCode())); } /** * Returns a string representation of this <em>BrandRepresentation</em>. * @return a string representation of the object. */ @Override public int hashCode() { return new HashCodeBuilder(15, 37) .append(getName()) .append(getRatio()) .append(isNarrow()) .toHashCode(); } }