001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2007
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.war.beans.admin.briefcase;
034:
035: import com.flexive.faces.FxJsfUtils;
036: import com.flexive.faces.beans.ResultSessionData;
037: import com.flexive.faces.messages.FxFacesMsgErr;
038: import com.flexive.faces.messages.FxFacesMsgInfo;
039: import com.flexive.shared.EJBLookup;
040: import com.flexive.shared.exceptions.FxApplicationException;
041: import com.flexive.shared.interfaces.BriefcaseEngine;
042: import com.flexive.shared.interfaces.SearchEngine;
043: import com.flexive.shared.search.AdminResultLocations;
044: import com.flexive.shared.search.Briefcase;
045: import com.flexive.shared.search.BriefcaseEdit;
046: import com.flexive.shared.search.FxResultSet;
047:
048: import java.util.ArrayList;
049: import java.util.List;
050:
051: /**
052: * Management of Briefcases.
053: *
054: * @author Gregor Schober (gregor.schober@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
055: * @version $Rev: 1 $
056: */
057: public class BriefcaseBean {
058:
059: private BriefcaseEngine briefcaseEng;
060: private List<Briefcase> list;
061: private FxResultSet queryResult;
062: private SearchEngine sqlSearchInterface;
063: // private static final String ID_CACHE_KEY = BriefcaseBean.class+"_id";
064: // private long id;
065: private BriefcaseEdit briefcase;
066: private long aclId;
067: private ResultSessionData sessionData;
068:
069: public BriefcaseBean() {
070: briefcaseEng = EJBLookup.getBriefcaseEngine();
071: briefcase = new BriefcaseEdit();
072: }
073:
074: /**
075: * Retrives all briefcases for the user.
076: *
077: * @return all briefcases.
078: */
079: public List<Briefcase> getList() {
080: try {
081: if (list == null) {
082: // Load only once per request
083: list = briefcaseEng.getList(true);
084: }
085: return list;
086: } catch (Throwable t) {
087: new FxFacesMsgErr(t).addToContext();
088: return new ArrayList<Briefcase>(0);
089: }
090: }
091:
092: public FxResultSet getQueryResult() {
093: return queryResult;
094: }
095:
096: public Briefcase getBriefcase() throws FxApplicationException {
097: if (briefcase != null && briefcase.getId() != getId()
098: && getId() != -1) {
099: // autodetect new ID
100: load();
101: }
102: return briefcase;
103: }
104:
105: public long getAclId() {
106: return aclId;
107: }
108:
109: public void setAclId(long aclId) {
110: this .aclId = aclId;
111: if (briefcase != null)
112: briefcase.setAcl(aclId);
113: }
114:
115: public String save() {
116: try {
117: briefcaseEng.modify(getId(), briefcase.getName(), briefcase
118: .getDescription(), briefcase.getAcl());
119: new FxFacesMsgInfo("Briefcase.nfo.updateSuccessfull",
120: briefcase.getName()).addToContext();
121: } catch (Exception exc) {
122: new FxFacesMsgErr(exc).addToContext();
123: }
124: return load();
125: }
126:
127: public String load() {
128: try {
129: briefcase = briefcaseEng.load(getId()).asEditable();
130: aclId = briefcase.getAcl();
131: if (sqlSearchInterface == null) {
132: sqlSearchInterface = EJBLookup.getSearchEngine();
133: }
134: String sSql = "select m.id,m.version from content m filter briefcase="
135: + getId();
136: queryResult = sqlSearchInterface
137: .search(sSql, 1, null, null);
138: return "briefcaseDetail";
139: } catch (Exception exc) {
140: queryResult = null;
141: new FxFacesMsgErr(exc).addToContext();
142: return "briefcaseNotLoaded";
143: }
144: }
145:
146: public long getId() {
147: return getSessionData().getBriefcaseId();
148: /*if (this.id<=0) {
149: Object value = FxJsfUtils.getSessionAttribute(ID_CACHE_KEY);
150: this.id = value==null?-1:(Long)value;
151: }
152: return id;*/
153: }
154:
155: public ResultSessionData getSessionData() {
156: if (sessionData == null) {
157: // TODO: use own briefcase location
158: sessionData = ResultSessionData.getSessionData(FxJsfUtils
159: .getSession(), AdminResultLocations.ADMIN);
160: }
161: return sessionData;
162: }
163:
164: public void setId(long briefcaseId) {
165: getSessionData().setBriefcaseId(briefcaseId);
166: /*this.id= briefcaseId;
167: FxJsfUtils.setSessionAttribute(ID_CACHE_KEY,id);*/
168: }
169:
170: /**
171: * Returns true if there are no briefcases to display.
172: *
173: * @return true if there are no briefcases to display
174: */
175: public boolean getListIsEmpty() {
176: return getList().size() == 0;
177: }
178:
179: /**
180: * Returns the briefcase specified by the property id.
181: *
182: * @return the next page to render
183: */
184: public String delete() {
185: try {
186: long _id = getId();
187: String name = briefcaseEng.load(_id).getName();
188: briefcaseEng.remove(_id);
189: new FxFacesMsgInfo("Briefcase.nfo.deleteSuccessfull", name)
190: .addToContext();
191: } catch (Throwable t) {
192: new FxFacesMsgErr(t).addToContext();
193: }
194: return "briefcaseNotLoaded";
195: }
196:
197: }
|