/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/rwiki/trunk/rwiki-impl/impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/Decoded.java $ * $Id: Decoded.java 84222 2010-11-03 13:15:52Z david.horwitz@uct.ac.za $ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation. * * Licensed under the Educational Community License, Version 1.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.opensource.org/licenses/ecl1.php * * 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 uk.ac.cam.caret.sakai.rwiki.component.service.impl; import org.sakaiproject.entity.api.Entity; /** * Represents a decoded entity url * * @author ieb */ public class Decoded { public Decoded() { // Default Constructor } public Decoded(String context, String container, String page, String version) { this.context = context; this.container = container; this.page = page; this.version = version; } private String id = null; private String context = null; private String container = null; private String page = null; private String version = null; /** * @return Returns the container. */ public String getContainer() { return container; } /** * @param container * The container to set. */ public void setContainer(String container) { this.container = container; } /** * @return Returns the context. */ public String getContext() { return context; } /** * @param context * The context to set. */ public void setContext(String context) { this.context = context; } /** * @return Returns the id. */ public String getId() { if (id == null) { if (container != null && "/".equals(container)) { id = context + container + page; } else { id = context + container + Entity.SEPARATOR + page; } } return id; } /** * @return Returns the page. */ public String getPage() { return page; } /** * @param page * The page to set. */ public void setPage(String page) { id = null; this.page = page; } /** * @return Returns the version. */ public String getVersion() { id = null; return version; } /** * @param version * The version to set. */ public void setVersion(String version) { id = null; this.version = version; } public boolean equals(Object o) { if (o instanceof Decoded) { Decoded d = (Decoded) o; // What's wrong with using this.toString().equals(d.toString()) ? String dcontainer = d.getContainer(); String dcontext = d.getContext(); String dpage = d.getPage(); String dversion = d.getVersion(); if (container == null && dcontainer != null) return false; if (context == null && dcontext != null) return false; if (page == null && dpage != null) return false; if (version == null && dversion != null) return false; if (container != null && !container.equals(dcontainer)) return false; if (context != null && !context.equals(dcontext)) return false; if (page != null && !page.equals(dpage)) return false; if (version != null && !version.equals(dversion)) return false; return true; } return false; } public int hashCode() { return toString().hashCode(); } public String toString() { return getId() + "@" + version; } }