001 /*
002 * ----------------------------------------------------------------------
003 * Copyright (C) 2009 Enrique Lara (k957@68k.org)
004 *
005 * TinLizard is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU Lesser General Public License
007 * as published by the Free Software Foundation; either version 3.0
008 * of the License, or (at your option) any later version.
009 *
010 * TinLizard is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013 * GNU Lesser General Public License for more details.
014 *
015 * You should have received a copy of the GNU Lesser General Public License
016 * along with TinLizard. If not, see http://www.gnu.org/licenses/.
017 * ----------------------------------------------------------------------
018 */
019 package tinlizard.web;
020
021 import tinlizard.model.CurrentUser;
022
023 import tinlizard.util.Messages;
024
025 import java.util.ArrayList;
026 import java.util.Collection;
027 import java.util.Date;
028 import java.util.Iterator;
029
030 import org.jvnet.localizer.Localizable;
031
032 /**
033 * Bass Class for Web Accessible Collections.
034 */
035 @SuppressWarnings("unchecked")
036 public abstract class ObjectCollectionWeb extends ObjectWeb<Collection<Object>> implements Collection<ObjectWeb> {
037 private final String name;
038 private final Collection<Object> subject;
039 private final Collection<ObjectWeb> delegate;
040 private final Date created;
041 private final String createdBy;
042
043 /**
044 * @deprecated
045 */
046 ObjectCollectionWeb(final String name) {
047 this.name = name;
048 this.subject = new ArrayList<Object>();
049 this.delegate = new ArrayList<ObjectWeb>();
050 this.created = new Date();
051 this.createdBy = Messages.SYSTEM();
052 }
053
054 ObjectCollectionWeb(final Localizable name) {
055 this.name = name.toString(CurrentUser.getLocale());
056 this.subject = new ArrayList<Object>();
057 this.delegate = new ArrayList<ObjectWeb>();
058 this.created = new Date();
059 this.createdBy = Messages.SYSTEM();
060 }
061
062 @Override
063 public String getName() {
064 return name;
065 }
066
067 @Override
068 protected final Collection<Object> getSubject() {
069 return subject;
070 }
071
072 protected final Collection<ObjectWeb> getDelegate() {
073 return delegate;
074 }
075
076 public final Date getCreated() {
077 return this.created;
078 }
079
080 public final String getCreatedBy() {
081 return this.createdBy;
082 }
083
084 public final Date getLastModified() {
085 return getCreated();
086 }
087
088 public final String getLastModifiedBy() {
089 return getCreatedBy();
090 }
091
092 public final boolean add(final ObjectWeb o) {
093 return delegate.add(o);
094 }
095
096 public final boolean addAll(final Collection<?extends ObjectWeb> c) {
097 return delegate.addAll(c);
098 }
099
100 public final void clear() {
101 delegate.clear();
102 }
103
104 public final boolean contains(final Object o) {
105 return delegate.contains(o);
106 }
107
108 public final boolean containsAll(final Collection<?> c) {
109 return delegate.containsAll(c);
110 }
111
112 public final boolean isEmpty() {
113 return delegate.isEmpty();
114 }
115
116 public final Iterator<ObjectWeb> iterator() {
117 return delegate.iterator();
118 }
119
120 public final boolean remove(final Object o) {
121 return delegate.remove(o);
122 }
123
124 public final boolean removeAll(final Collection<?> c) {
125 return delegate.removeAll(c);
126 }
127
128 public final boolean retainAll(final Collection<?> c) {
129 return delegate.retainAll(c);
130 }
131
132 public final int size() {
133 return delegate.size();
134 }
135
136 public final Object[] toArray() {
137 return delegate.toArray();
138 }
139
140 public final Object[] toArray(final Object[] a) {
141 return delegate.toArray(a);
142 }
143 }