001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.shared.security;
034:
035: import com.flexive.shared.FxArrayUtils;
036:
037: import java.io.Serializable;
038:
039: /**
040: * A list of accounts
041: *
042: * @author Gregor Schober (gregor.schober@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
043: */
044: public class AccountList implements Serializable {
045: private static final long serialVersionUID = 4030589087083042264L;
046:
047: private Account[] list = null;
048:
049: /**
050: * Constructor
051: *
052: * @param users the users in the list
053: */
054: public AccountList(Account[] users) {
055: if (users == null)
056: users = new Account[0];
057: this .list = FxArrayUtils.clone(users);
058: }
059:
060: /**
061: * Returns the amount of users in the list.
062: *
063: * @return the amount of users in the list
064: */
065: public int size() {
066: return list.length;
067: }
068:
069: /**
070: * Returns all users in the list.
071: *
072: * @return all users in the list
073: */
074: public Account[] getUsers() {
075: return FxArrayUtils.clone(list);
076: }
077:
078: /**
079: * Returns the user at the given position.
080: *
081: * @param pos the position
082: * @return the user at the given position
083: */
084: public Account get(int pos) {
085: return this .list[pos];
086: }
087:
088: /**
089: * Returns a array holding the id's of all users the list.
090: *
091: * @return a array holding the id's of all users in the list
092: */
093: public long[] toIdArray() {
094: long idArr[] = new long[list.length];
095: for (int i = 0; i < list.length; i++)
096: idArr[i] = list[i].getId();
097: return idArr;
098: }
099:
100: /**
101: * Returns a array holding the names of all users in the list.
102: *
103: * @return a array holding the names of all users in the list
104: */
105: public String[] toNameArray() {
106: if (list == null)
107: return new String[0];
108: String idArr[] = new String[list.length];
109: for (int i = 0; i < list.length; i++)
110: idArr[i] = list[i].getName();
111: return idArr;
112: }
113:
114: /**
115: * Removes a user from the list.
116: *
117: * @param user the user to remove from the list
118: */
119: public void remove(Account user) {
120: remove(user.getId());
121: }
122:
123: /**
124: * Removes users from the list.
125: *
126: * @param user the users to remove from the list
127: */
128: public void remove(Account user[]) {
129: for (Account anUser : user)
130: remove(anUser.getId());
131: }
132:
133: /**
134: * Removes groups identified by the unique id from the list.
135: *
136: * @param userId the users to remove from the list
137: */
138: public void remove(long userId[]) {
139: for (long anUserId : userId)
140: remove(anUserId);
141: }
142:
143: /**
144: * Removes a user identified by its unique id from the list.
145: *
146: * @param userId the user to remove from the list
147: */
148: public void remove(long userId) {
149: if (list != null) {
150: int elementFound = 0;
151: while (elementFound != -1) {
152: // Look for the elemenet
153: elementFound = -1;
154: for (int i = 0; i < list.length; i++) {
155: if (list[i].getId() == userId) {
156: elementFound = i;
157: break;
158: }
159: }
160: // Delete the element
161: if (elementFound != -1) {
162: Account tmp[] = new Account[list.length - 1];
163: int pos = 0;
164: for (int i = 0; i < list.length; i++) {
165: if (i != elementFound)
166: tmp[pos++] = list[i];
167: }
168: list = tmp;
169: }
170: }
171: }
172: }
173:
174: /**
175: * Returns a string representation of the users.
176: *
177: * @return a string representation of the users
178: */
179: @Override
180: public String toString() {
181: return AccountList.class + "@[" + toNameString() + "]";
182: }
183:
184: /**
185: * Returns a comma seperated list of the user names.
186: *
187: * @return a comma seperated list of the user names.
188: */
189: public String toNameString() {
190: String result = "";
191: for (Account entry : list) {
192: if (result.length() > 0)
193: result += ",";
194: result += entry.getName();
195: }
196: return result;
197: }
198:
199: }
|