/**
* Copyright (c) 2009 Juwi MacMillan Group GmbH
*
* 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 de.juwimm.cms.util;
import static de.juwimm.cms.common.Constants.rb;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.tree.TreePath;
import org.andromda.spring.RemoteServiceLocator;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import org.springframework.remoting.RemoteAccessException;
import org.springframework.remoting.RemoteInvocationFailureException;
import org.springframework.security.GrantedAuthority;
import org.springframework.security.SpringSecurityException;
import org.springframework.security.context.SecurityContextHolder;
import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
import org.springframework.security.providers.rcp.RemoteAuthenticationManager;
import org.tizzit.util.ArraySorter;
import org.tizzit.util.Comparer;
import org.tizzit.util.XercesHelper;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.Ostermiller.util.Browser;
import de.juwimm.cms.Messages;
import de.juwimm.cms.authorization.vo.GroupValue;
import de.juwimm.cms.authorization.vo.RoleValue;
import de.juwimm.cms.authorization.vo.UserLoginValue;
import de.juwimm.cms.authorization.vo.UserUnitsGroupsValue;
import de.juwimm.cms.authorization.vo.UserValue;
import de.juwimm.cms.common.Constants;
import de.juwimm.cms.common.UserRights;
import de.juwimm.cms.components.vo.AddressValue;
import de.juwimm.cms.components.vo.DepartmentValue;
import de.juwimm.cms.components.vo.PersonValue;
import de.juwimm.cms.components.vo.TalktimeValue;
import de.juwimm.cms.content.frame.DlgModal;
import de.juwimm.cms.exceptions.AlreadyCheckedOutException;
import de.juwimm.cms.exceptions.InvalidSizeException;
import de.juwimm.cms.exceptions.InvalidUsernameException;
import de.juwimm.cms.exceptions.LocalizedException;
import de.juwimm.cms.exceptions.NeededFieldsMissingException;
import de.juwimm.cms.exceptions.NoSitesException;
import de.juwimm.cms.exceptions.UnitnameIsAlreadyUsedException;
import de.juwimm.cms.exceptions.UserException;
import de.juwimm.cms.exceptions.ViewComponentLinkNameAlreadyExisting;
import de.juwimm.cms.exceptions.ViewComponentLinkNameIsEmptyException;
import de.juwimm.cms.exceptions.ViewComponentNotFound;
import de.juwimm.cms.gui.PanCheckInPages;
import de.juwimm.cms.gui.event.ExitEvent;
import de.juwimm.cms.gui.event.ExitListener;
import de.juwimm.cms.gui.table.ModifiedPagesTableModel;
import de.juwimm.cms.gui.tree.CmsTreeModel;
import de.juwimm.cms.gui.tree.PageNode;
import de.juwimm.cms.http.HttpClientWrapper;
import de.juwimm.cms.remote.ClientServiceSpring;
import de.juwimm.cms.safeguard.vo.ActiveRealmValue;
import de.juwimm.cms.safeguard.vo.RealmJaasValue;
import de.juwimm.cms.safeguard.vo.RealmJdbcValue;
import de.juwimm.cms.safeguard.vo.RealmLdapValue;
import de.juwimm.cms.safeguard.vo.RealmSimplePwUserValue;
import de.juwimm.cms.safeguard.vo.RealmSimplePwValue;
import de.juwimm.cms.search.vo.XmlSearchValue;
import de.juwimm.cms.vo.AccessRoleValue;
import de.juwimm.cms.vo.ContentValue;
import de.juwimm.cms.vo.ContentVersionValue;
import de.juwimm.cms.vo.DocumentSlimValue;
import de.juwimm.cms.vo.DocumentValue;
import de.juwimm.cms.vo.EditionValue;
import de.juwimm.cms.vo.HostValue;
import de.juwimm.cms.vo.PictureSlimValue;
import de.juwimm.cms.vo.PictureSlimstValue;
import de.juwimm.cms.vo.ShortLinkValue;
import de.juwimm.cms.vo.SiteGroupValue;
import de.juwimm.cms.vo.SiteValue;
import de.juwimm.cms.vo.TaskValue;
import de.juwimm.cms.vo.UnitValue;
import de.juwimm.cms.vo.ViewComponentValue;
import de.juwimm.cms.vo.ViewDocumentValue;
import de.juwimm.cms.vo.compound.ViewIdAndInfoTextValue;
import de.juwimm.cms.vo.compound.ViewIdAndUnitIdValue;
/**
* Facade Class for communicating with the server.
*
* @author <a href="mailto:s.kulawik@juwimm.com">Sascha-Matthias Kulawik</a>
* @version $Id$
*/
public class Communication implements ExitListener, ActionListener {
private static Logger log = Logger.getLogger(Communication.class);
private UserLoginValue user = null;
private GroupValue[] groups = null;
private boolean loggedIn = false;
private int activeSiteId = -1;
private CmsTreeModel treeModel;
private boolean isSessionInitialized = false;
private ViewDocumentValue viewDocument = null;
private int selectedUnitId;
private DbHelper dbHelper = null;
/* This ArrayList contains the ContentId (Integer) of all Contents who
* haven't been checked in. Needed for checking them in after unclean exit
*/
private static ArrayList<Integer> checkOutPages = new ArrayList<Integer>();
private ClientServiceSpring clientService;
public Communication() {
}
public Communication initialize() {
if (!isSessionInitialized) {
ActionHub.addExitListener(this);
isSessionInitialized = true;
}
return this;
}
public ClientServiceSpring getClientService() {
return clientService;
}
public void setClientService(ClientServiceSpring clientService) {
this.clientService = clientService;
}
/**
* @param e
*/
public void actionPerformed(ActionEvent e) {
ActionHub.fireActionPerformed(e);
}
public boolean isLoggedIn() {
return loggedIn;
}
public void setLoggedIn(boolean loggedIn) {
this.loggedIn = loggedIn;
}
public int getViewDocumentId() {
return viewDocument.getViewDocumentId().intValue();
}
public ViewDocumentValue getViewDocument() {
return viewDocument;
}
public void setViewDocument(ViewDocumentValue vdDao) {
this.viewDocument = vdDao;
}
public boolean isUserInRole(String role) {
if (user == null) {
return false;
}
if (user.getUser().isMasterRoot()) {
return true;
}
if (isUserInRolePhysically(role)) {
return true;
}
if (isUserInRolePhysically(UserRights.SITE_ROOT)) {
return true;
}
return false;
}
public boolean isUserInRolePhysically(String role) {
if (groups == null) return false;
for (int i = 0; i < groups.length; i++) {
RoleValue[] roles = groups[i].getRoles();
if (roles == null) continue;
for (int j = 0; j < roles.length; j++) {
if (roles[j].getRoleId().equalsIgnoreCase(role)) {
return true;
}
}
}
return false;
}
public boolean isUserInRole(UserValue uv, String role) {
if (uv == null) {
return false;
}
if (uv.isMasterRoot()) {
return true;
}
try {
GroupValue[] gv = getClientService().getGroups4User(uv.getUserName());
if (gv == null) return false;
for (int i = 0; i < gv.length; i++) {
for (int j = 0; j < gv[i].getRoles().length; j++) {
if (gv[i].getRoles()[j].getRoleId().equalsIgnoreCase(role)) {
return true;
}
}
}
} catch (Exception exe) {
log.error(exe);
}
return false;
}
public GroupValue[] getGroups() {
return groups;
}
public GroupValue[] getGroups4User(String userName) throws Exception {
GroupValue[] gv = getClientService().getGroups4User(userName);
if (gv == null) gv = new GroupValue[0];
return gv;
}
public void removeUserFromGroup(GroupValue gv, String userName) throws Exception {
gv.setRoles(new RoleValue[0]);
getClientService().removeUserFromGroup(gv, userName);
}
public void addUserToGroup(GroupValue groupValue, String usrName) throws Exception {
groupValue.setRoles(new RoleValue[0]);
getClientService().addUserToGroup(groupValue, usrName);
}
public RoleValue[] getRolesMe() {
ArrayList<String> al = new ArrayList<String>(groups.length);
for (int i = 0; i < groups.length; i++) {
for (int j = 0; j < groups[i].getRoles().length; j++) {
al.add(groups[i].getRoles()[j].getRoleId());
}
}
return al.toArray(new RoleValue[0]);
}
public RoleValue[] getAllRoles() {
try {
return getClientService().getAllRoles();
} catch (Exception exe) {
log.error(exe);
}
return new RoleValue[0];
}
public GroupValue[] getAllGroups() {
GroupValue[] gv = new GroupValue[0];
try {
gv = getClientService().getAllGroups();
} catch (Exception exe) {
log.error(exe);
}
return gv;
}
public GroupValue[] getAllGroupsUsedInUnit(int unitId) {
GroupValue[] gv = new GroupValue[0];
try {
gv = getClientService().getAllGroupsUsedInUnit(Integer.valueOf(unitId));
} catch (Exception exe) {
log.error(exe);
}
return gv;
}
public GroupValue createGroup(String groupName) throws Exception {
return getClientService().createGroup(groupName);
}
public void removeGroup(int groupId) throws Exception {
getClientService().removeGroup(Integer.valueOf(groupId));
}
public void updateGroup(GroupValue gv) throws Exception {
getClientService().updateGroup(gv);
}
/**
* @deprecated This was a migration method for migrating to new Axis model
*/
@Deprecated
private Vector arrayToVector(Object[] objarr) {
if (objarr != null) {
Vector<Object> vec = new Vector<Object>(objarr.length);
for (int i = 0; i < objarr.length; i++) {
vec.add(objarr[i]);
}
return vec;
}
return new Vector();
}
public void showBrowserWindow(int vcId, boolean showInFrame) {
String strHost = Constants.CMS_PATH_DEMOPAGE;
String page = "";
if (showInFrame) {
page = Constants.CMS_PATH_DEMOPAGE_FULLFRAMESET;
} else {
page = Constants.CMS_PATH_DEMOPAGE_CONTENT;
}
try {
Browser.displayURL(strHost + getViewDocument().getLanguage() + "/" + getPathForViewComponentId(vcId) + "." + page);
} catch (IOException exe) {
log.error("Show browser error occures", exe);
}
}
public String getPathForViewComponentId(int vcId) {
try {
return getClientService().getPathForViewComponentId(Integer.valueOf(vcId));
} catch (Exception exe) {
return "";
}
}
public String getDCF(String dcfname) throws Exception {
String dcf = getDbHelper().getDCF(dcfname);
if (dcf == null || dcf.equalsIgnoreCase("")) {
dcf = HttpClientWrapper.getInstance().getString(Constants.CMS_PATH_DCF + dcfname + ".xml?lang=" + Constants.CMS_LOCALE.getLanguage());
getDbHelper().setDCF(dcfname, dcf);
}
return dcf;
}
public boolean exitPerformed(ExitEvent e) {
log.info("Exit-event started");
int result = JOptionPane.showConfirmDialog(UIConstants.getMainFrame(), rb.getString("dialog.exit.text"), rb.getString("dialog.exit"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (result == JOptionPane.YES_OPTION) {
if (!checkOutPages.isEmpty()) {
ArrayList<ContentValue> pageList = new ArrayList<ContentValue>();
Iterator it = checkOutPages.iterator();
while (it.hasNext()) {
try {
ContentValue current = getClientService().getContent(((Integer) it.next()));
pageList.add(current);
} catch (Exception ex) {
String msg = Messages.getString("exception.checkingInAllRemainingPages", Integer.toString(checkOutPages.size()));
log.info(msg);
JOptionPane.showMessageDialog(UIConstants.getMainFrame(), msg, rb.getString("dialog.title"), JOptionPane.INFORMATION_MESSAGE);
UIConstants.getMainFrame().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
while (it.hasNext()) {
Integer contentId = (Integer) it.next();
try {
msg = Messages.getString("exception.checkingInAllRemainingPagesStatusbar", contentId.toString());
UIConstants.setActionStatus(msg);
getClientService().checkIn4ContentId(contentId);
} catch (Exception exe) {
log.error("Exit event error", exe);
}
}
checkOutPages = new ArrayList<Integer>();
UIConstants.getMainFrame().setCursor(Cursor.getDefaultCursor());
try {
if (log.isDebugEnabled()) {
log.debug("Calling logout on server");
}
getClientService().logout();
} catch (Exception exe) {
}
log.info("Goodbye!");
loggedIn = false;
return true;
}
}
PanCheckInPages pan = new PanCheckInPages(pageList);
if (rb == null) rb = Constants.rb;
DlgModal dlg = new DlgModal(pan, 300, 500, rb.getString("DlgModal.checkin"));
dlg.addOkListener(new OkListener(pan, dlg));
dlg.setVisible(true);
}
try {
if (log.isDebugEnabled()) {
log.debug("Calling logout on server");
}
getClientService().logout();
} catch (Exception exe) {
}
log.info("Goodbye!");
loggedIn = false;
return true;
}
return false;
}
public void setSelectedUnitId(int unitId) {
selectedUnitId = unitId;
}
public int getSelectedUnitId() {
return selectedUnitId;
}
public UserValue getUser() {
if (user != null) {
return user.getUser();
}
return null;
}
public UserValue getUserByName(String userName) {
return getClientService().getUserForId(userName);
}
public String getSiteConfigXML() {
return user.getSiteConfigXML();
}
public String getSiteName() {
return user.getSiteName();
}
public int getSiteId() {
return activeSiteId;
}
public boolean isUserInUnit(int unitId) {
//getClientService().isUserInUnit(user.getUser().getUserName(), unitId);
UnitValue[] uv = user.getUnits();
if (uv == null) {
return false;
}
for (int i = 0; i < uv.length; i++) {
if (uv[i].getUnitId().intValue() == unitId) {
return true;
}
}
return false;
}
public DbHelper getDbHelper() {
if (dbHelper == null) {
dbHelper = new DbHelper();
}
return dbHelper;
}
public SiteValue[] getSites(String userName, String passwd) throws InvalidUsernameException, NoSitesException, LocalizedException {
log.info("Trying to fetching Sites for User " + userName);
try {
SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL);
RemoteAuthenticationManager remoteAuthenticationService = RemoteServiceLocator.instance().getRemoteAuthenticationService();
GrantedAuthority[] authorities = remoteAuthenticationService.attemptAuthentication(userName, String.valueOf(passwd));
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(userName, String.valueOf(passwd), authorities));
log.debug(SecurityContextHolder.getContext().getAuthentication());
} catch (RemoteAccessException e) {
if (e.getCause() != null && e.getCause() instanceof SpringSecurityException) {
log.info("authentication failed: " + e.getMessage());
throw new InvalidUsernameException();
}
LocalizedException ge = new LocalizedException("communication.login.unkwownError", "unknown error", e);
ge.logThrowException();
throw ge;
}
try {
ClientServiceSpring cs = getClientService();
SiteValue[] sites = cs.getSites();
return sites;
} catch (Exception e) {
// e.printStackTrace();
throw new NoSitesException("No sites associated?", e);
}
}
public UserLoginValue login(String userName, String passwd, int activeSiteId) throws UserException {
try {
log.info("Trying to logging in User " + userName + " at activeSiteId " + activeSiteId);
this.activeSiteId = activeSiteId;
user = getClientService().login(userName, passwd, Integer.valueOf(activeSiteId));
groups = getClientService().getGroups();
} catch (Exception ue) {
log.error("Error getting login", ue);
throw new UserException(ue);
}
log.info("Login succeeded");
return user;
}
public UnitValue[] getUnits() throws Exception {
UnitValue[] uda = getClientService().getUnits();
if (uda != null) Arrays.sort(uda, new UnitDaoComparer());
return uda;
}
/**
*
* @author <a href="mailto:s.kulawik@juwimm.com">Sascha-Matthias Kulawik</a>
* company Juwi|MacMillan Group Gmbh, Walsrode, Germany
* @version $Id$
*/
public static class UnitDaoComparer extends UserValue implements Comparator<UnitValue> {
private static final long serialVersionUID = 1329857419797304096L;
public int compare(UnitValue objA, UnitValue objB) {
return objA.getName().toLowerCase().compareTo(objB.getName().toLowerCase());
}
}
public UnitValue[] getAllUnits() throws Exception {
UnitValue[] uda = getClientService().getAllUnits();
if (uda != null) Arrays.sort(uda, new UnitDaoComparer());
return uda;
}
public UnitValue getUnit(int unitId) throws Exception {
return getClientService().getUnit(Integer.valueOf(unitId));
}
public UserValue[] getUser4Unit(int unitId) throws Exception {
return getClientService().getAllUserForUnit(Integer.valueOf(unitId));
}
public void updateUser(UserValue uv) throws Exception {
getClientService().updateUser(uv);
}
public void updateUserMe() {
try {
getClientService().updateUser(getUser());
} catch (Exception exe) {
log.error(exe);
}
}
public void changePassword(String userName, String passwdNew) throws Exception {
getClientService().changePassword4User(userName, passwdNew, passwdNew);
if (userName.equals(user.getUser().getUserName())) {
getSites(userName, passwdNew);
}
}
public void createUser(String userName, String passwd, String firstName, String lastName, String email, int initialUnitId) throws NeededFieldsMissingException, Exception {
initialUnitId = (initialUnitId < 0) ? 0 : initialUnitId;
try {
getClientService().createUser(userName, passwd, firstName, lastName, email, Integer.valueOf(initialUnitId));
} catch (Exception ue) {
/*
* if (this.isExceptionOfType(ue, "NeededFieldsMissingException")) {
* AxisFault af = (AxisFault) ue; String reason =
* af.getFaultReason(); String expected =
* Communication.USER_EXCEPTION + "NeededFieldsMissingException";
* NeededFieldsMissingException nfme = new
* NeededFieldsMissingException(); reason =
* reason.substring(expected.length());
* nfme.setMissingFields(reason); throw nfme; }
*/
// log.error("Error creating user", ue);
throw new UserException(ue);
}
}
public Integer createUnit(String unitName) throws UnitnameIsAlreadyUsedException, UserException {
try {
return getClientService().createUnit(unitName);
} catch (Exception ue) {
/*
* if (this.isExceptionOfType(ue, "UnitnameIsAlreadyUsedException")) {
* UnitnameIsAlreadyUsedException
* unitNameInUseExeption = new UnitnameIsAlreadyUsedException();
* throw unitNameInUseExeption; }
*/
throw new UserException(ue);
}
}
public void removeUnit(UnitValue unitDao) throws Exception {
getClientService().removeUnit(unitDao);
}
public void removeUnit(int unitId) throws Exception {
getClientService().removeUnit(Integer.valueOf(unitId));
}
public void removeTask(int taskId) throws Exception {
getClientService().removeTask(Integer.valueOf(taskId));
}
public void setTaskViewed(int taskId) throws Exception {
getClientService().setTaskViewed(Integer.valueOf(taskId));
}
public void removePerson(long personId) throws Exception {
getClientService().removePerson(Long.valueOf(personId));
}
public void removeDepartment(long departmentId) throws Exception {
getClientService().removeDepartment(Long.valueOf(departmentId));
}
public void removeAddress(long addressId) throws Exception {
getClientService().removeAddress(Long.valueOf(addressId));
}
public void removeTalktime(long talktimeId) throws Exception {
getClientService().removeTalktime(Long.valueOf(talktimeId));
}
public long addTalktime2Person(long personId, String talkTimeType, String talkTimes) throws Exception {
return getClientService().addTalktime2Person(personId, talkTimeType, talkTimes);
}
public long addTalktime2Department(long departmentId, String talkTimeType, String talkTimes) throws Exception {
return getClientService().addTalktime2Department(Long.valueOf(departmentId), talkTimeType, talkTimes);
}
public long addTalktime2Unit(int unitId, String talkTimeType, String talkTimes) throws Exception {
return getClientService().addTalktime2Unit(Integer.valueOf(unitId), talkTimeType, talkTimes);
}
public void addAddress2Person(long personId, long addressId) throws Exception {
getClientService().addAddress2Person(Long.valueOf(personId), Long.valueOf(addressId));
}
public void addAddress2Department(long departmentId, long addressId) throws Exception {
getClientService().addAddress2Department(Long.valueOf(departmentId), Long.valueOf(addressId));
}
public void addAddress2Unit(int unitId, long addressId) throws Exception {
getClientService().addAddress2Unit(Integer.valueOf(unitId), Long.valueOf(addressId));
}
public void updateUnit(UnitValue dao) throws Exception {
getClientService().updateUnit(dao);
}
public void updatePerson(PersonValue personDao) throws Exception {
getClientService().updatePerson(personDao);
}
public void updateDepartment(DepartmentValue departmentDao) throws Exception {
getClientService().updateDepartment(departmentDao);
}
public void updateAddress(AddressValue addressData) throws Exception {
getClientService().updateAddress(addressData);
}
public void updateTalktime(TalktimeValue ttData) throws Exception {
getClientService().updateTalktime(ttData);
}
public void deleteUser(String userName) throws Exception {
getClientService().deleteUser(userName);
}
public void removeUserFromUnit(UnitValue unit) throws Exception {
getClientService().removeUserFromUnit(unit, user.getUser().getUserName());
}
public void removeUserFromUnit(UnitValue unit, String userNameId) throws Exception {
getClientService().removeUserFromUnit(unit, userNameId);
}
public void addUser2Unit(UserValue user, UnitValue unit) throws Exception {
getClientService().addUser2Unit(user, unit);
}
public int getUnit4ViewComponent(int viewComponentId) throws Exception {
return getClientService().getUnit4ViewComponent(Integer.valueOf(viewComponentId));
}
// the returned Array will contain viewDocuments ordered by language
// but it will put vd's in the languages contained in the array languages first
public ViewDocumentValue[] getViewDocuments() throws Exception {
ViewDocumentValue[] documents = getClientService().getViewDocuments();
int indexFirst = 0;
int indexSec = 0;
String[] languages = new String[] {"de", "en", "fr", "it", "es", "ru"};
ViewDocumentValue[] orderedDocuments = new ViewDocumentValue[documents.length];
ViewDocumentValue[] firstDocuments = new ViewDocumentValue[documents.length];
ViewDocumentValue[] secondDocuments = new ViewDocumentValue[documents.length];
for (int i = 0; i < languages.length; i++) {
for (int j = 0; j < documents.length; j++) {
if (documents[j].getLanguage().equalsIgnoreCase(languages[i])) {
firstDocuments[indexFirst++] = documents[j];
}
}
}
for (int i = 0; i < documents.length; i++) {
boolean flag = true;
for (int j = 0; j < languages.length; j++) {
if (documents[i].getLanguage().equalsIgnoreCase(languages[j])) {
flag = false;
}
}
if (flag) {
secondDocuments[indexSec++] = documents[i];
}
}
if (firstDocuments != null) Arrays.sort(firstDocuments, new DocumentsComparer());
if (secondDocuments != null) Arrays.sort(secondDocuments, new DocumentsComparer());
for (int i = 0; i < indexFirst; i++) {
orderedDocuments[i] = firstDocuments[i];
}
for (int i = 0; i < indexSec; i++) {
orderedDocuments[i + indexFirst] = secondDocuments[i];
}
return orderedDocuments;
}
public ViewDocumentValue getViewDocument(String viewType, String language) throws Exception {
return getClientService().getViewDocument4ViewTypeAndLanguage(viewType, language);
}
private class DocumentsComparer extends ViewDocumentValue implements Comparator<ViewDocumentValue> {
private static final long serialVersionUID = 1L;
public int compare(ViewDocumentValue firstDoc, ViewDocumentValue secondDoc) {
if ((firstDoc == null) || (secondDoc == null)) {
return 0;
}
String firstLanguage = rb.getString("panel.tree.language." + firstDoc.getLanguage());
String secondLanguage = rb.getString("panel.tree.language." + secondDoc.getLanguage());
int retVal = firstLanguage.toLowerCase().compareToIgnoreCase(secondLanguage);
return retVal;
}
}
public UserValue[] getAllUser() throws Exception {
UserValue[] ud = getClientService().getAllUser();
if (ud != null) Arrays.sort(ud, new UserDaoComparer());
return ud;
}
/**
*
* @author <a href="mailto:s.kulawik@juwimm.com">Sascha-Matthias Kulawik</a>
* company Juwi|MacMillan Group Gmbh, Walsrode, Germany
* @version $Id$
*/
private class UserDaoComparer extends UserValue implements Comparator<UserValue> {
private static final long serialVersionUID = 2497414650147720673L;
public int compare(UserValue firstUser, UserValue secondUser) {
int retVal = firstUser.getUserName().toLowerCase().compareTo(secondUser.getUserName().toLowerCase());
if (retVal != 0) {
return retVal;
}
if (firstUser.getFirstName() == null) return -1;
if (secondUser.getFirstName() == null) return 1;
return firstUser.getFirstName().toLowerCase().compareTo(secondUser.getFirstName().toLowerCase());
}
}
private void replaceTaskStrings(TaskValue[] tdao) {
for (int i = 0; i < tdao.length; i++) {
if (tdao[i].getTaskType() == Constants.TASK_SYSTEMMESSAGE_ERROR || tdao[i].getTaskType() == Constants.TASK_SYSTEMMESSAGE_INFORMATION) {
try {
String comment = tdao[i].getComment();
if (tdao[i].getTaskType() == Constants.TASK_SYSTEMMESSAGE_ERROR) {
try {
comment = rb.getString("SYSTEMMESSAGE_ERROR." + comment);
} catch (Exception exe) {
comment = Messages.getString("exception.UnknownError", comment);
}
} else {
comment = rb.getString("SYSTEMMESSAGE_INFORMATION." + comment);
}
tdao[i].setComment(comment);
} catch (Exception exe) {
}
tdao[i].setTaskType(Constants.TASK_MESSAGE);
}
}
}
public TaskValue[] getAllTasks() throws Exception {
TaskValue[] tdao = getClientService().getAllTasks();
if (tdao != null) {
replaceTaskStrings(tdao);
ArraySorter.sort(tdao, new TaskValueComparer());
}
return tdao;
}
/**
*
* @author <a href="mailto:s.kulawik@juwimm.com">Sascha-Matthias Kulawik</a>
* company Juwi|MacMillan Group Gmbh, Walsrode, Germany
* @version $Id$
*/
private class TaskValueComparer implements Comparer {
public int compare(Object objA, Object objB) {
TaskValue uda = (TaskValue) objA;
TaskValue ud = (TaskValue) objB;
return new Long(uda.getCreationDate()).compareTo(new Long(ud.getCreationDate()));
}
}
public boolean isNewTask4User() throws Exception {
return getClientService().isNewTask4User(user.getUser().getUserName());
}
public void reindexSite(Integer siteId) throws Exception {
getClientService().reindexSite(siteId);
}
public void reindexContent(Integer vcId) throws Exception {
getClientService().reindexPage(vcId);
}
public UserValue[] getAllUser(int groupId) throws Exception {
return getClientService().getAllUser(Integer.valueOf(groupId));
}
public UserValue[] getAllUser(int groupId, int unitId) {
UserValue[] uv = new UserValue[0];
try {
uv = getClientService().getAllUser4GroupAndUnit(Integer.valueOf(groupId), Integer.valueOf(unitId));
} catch (Exception exe) {
log.error(exe);
}
return uv;
}
public ViewDocumentValue createViewDocument(ViewDocumentValue vDao) throws Exception {
return getClientService().createViewDocument(vDao);
}
public void setDefaultViewDocument(int viewDocumentId) throws Exception {
if (viewDocumentId > 0) {
getClientService().setDefaultViewDocument(Integer.valueOf(viewDocumentId));
}
}
public ContentValue createContent(ContentValue cDao) throws Exception {
return getClientService().createContent(cDao);
}
public void setUnit4ViewComponent(int unitId, ViewDocumentValue viewDocumentDao, int viewComponentId) throws Exception {
getClientService().setUnit4ViewComponent(Integer.valueOf(unitId), viewDocumentDao, Integer.valueOf(viewComponentId));
}
public void removeViewDocument(int viewDocumentId) throws Exception {
getClientService().removeViewDocument(Integer.valueOf(viewDocumentId));
}
@SuppressWarnings("unchecked")
public boolean removeViewComponent(int intViewComponentId, String viewComponentName, byte onlineState) {
boolean retVal = false;
try {
// CHECK IF THIS NODE CONTAINS SUBNODES
ViewIdAndInfoTextValue[] str = getAllChildrenNamesWithUnit(intViewComponentId);
String units = "";
if (str != null && str.length > 0) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length; i++) {
sb.append(str[i].getInfoText().trim()).append("\n");
}
units = sb.toString();
}
if (!units.equalsIgnoreCase("")) {
if (!isUserInRole(UserRights.SITE_ROOT)) {
// dazwischen, damit sparen wir uns das zweite...
String msg = Messages.getString("comm.removevc.containsunitsandcannotremove", units);
JOptionPane.showMessageDialog(UIConstants.getMainFrame(), msg, rb.getString("dialog.title"), JOptionPane.ERROR_MESSAGE);
return false;
}
units = Messages.getString("comm.removevc.header_units", units);
}
String refVcs = "";
ViewComponentValue[] refDao = getViewComponentsWithReferenceToViewComponentId(intViewComponentId);
if (refDao != null && refDao.length > 0) {
StringBuffer sb = new StringBuffer();
for (int j = 0; j < refDao.length; j++) {
if (refDao[j].getViewType() == Constants.VIEW_TYPE_INTERNAL_LINK) {
// InternalLink in the Tree
sb.append(Messages.getString("comm.removevc.refvc.internallink", ("\"" + refDao[j].getDisplayLinkName() + "\""), ("\"" + refDao[j].getMetaData().trim() + "\""))).append("\n");
} else if (refDao[j].getViewType() == Constants.VIEW_TYPE_SYMLINK) {
// reference though Symlink in the Tree
sb.append(Messages.getString("comm.removevc.refvc.symlink", ("\"" + refDao[j].getDisplayLinkName() + "\""), ("\"" + refDao[j].getMetaData().trim() + "\""))).append("\n");
} else {
// reference through links in the content
sb.append(Messages.getString("comm.removevc.refvc.content", ("\"" + refDao[j].getDisplayLinkName() + "\""), ("\"" + refDao[j].getMetaData().trim() + "\""))).append("\n");
}
}
refVcs = sb.toString();
}
if (!refVcs.equals("")) {
refVcs = Messages.getString("comm.removevc.header_refvcs", refVcs);
}
String teaserText = "";
boolean teaserReferenced = false;
try {
StringBuilder refTeaser = new StringBuilder("");
XmlSearchValue[] xmlSearchValues = this.searchXml(getSiteId(), "//teaserRef");
if (xmlSearchValues != null && xmlSearchValues.length > 0) {
// herausfinden, ob es sich um DIESEN Teaser handelt
String resultRootStartElement = "<searchTeaserResult>";
String resultRootEndElement = "</searchTeaserResult>";
for (int i = 0; i < xmlSearchValues.length; i++) {
StringBuilder stringBuilder = new StringBuilder(xmlSearchValues[i].getContent());
stringBuilder.insert(0, resultRootStartElement);
stringBuilder.append(resultRootEndElement);
Document doc = XercesHelper.string2Dom(stringBuilder.toString());
Iterator<Element> teaserIterator = XercesHelper.findNodes(doc, "searchTeaserResult/teaserRef");
while (teaserIterator.hasNext()) {
Element element = teaserIterator.next();
String viewComponentIdValue = element.getAttribute("viewComponentId");
if (viewComponentIdValue != null && viewComponentIdValue.trim().length() > 0) {
if (intViewComponentId == (new Integer(viewComponentIdValue)).intValue()) {
teaserReferenced = true;
refTeaser.append(this.getPathForViewComponentId(xmlSearchValues[i].getViewComponentId().intValue()) + "\n");
}
}
}
}
if (teaserReferenced) {
teaserText = Messages.getString("comm.removevc.header.teaser", refTeaser.toString());
}
}
} catch (Exception exception) {
log.error(exception.getMessage(), exception);
}
String msgHeader = "";
if (onlineState == Constants.ONLINE_STATUS_UNDEF || onlineState == Constants.ONLINE_STATUS_OFFLINE) {
msgHeader = rb.getString("comm.removevc.header_offline");
} else {
msgHeader = rb.getString("comm.removevc.header_online");
}
String msgstr = msgHeader + units + refVcs + teaserText;
int i = JOptionPane.showConfirmDialog(UIConstants.getMainFrame(), msgstr, rb.getString("dialog.title"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
if (i == JOptionPane.YES_OPTION) {
if (onlineState == Constants.ONLINE_STATUS_UNDEF || onlineState == Constants.ONLINE_STATUS_OFFLINE) {
getClientService().removeViewComponent(Integer.valueOf(intViewComponentId), true);
/*
* } else { // nothing at the moment, the code for here is
* currently in PanTree actionViewComponentPerformed
*/
}
retVal = true;
}
} catch (Exception exe) {
log.error("Error removing vc", exe);
}
if (retVal) {
try {
checkOutPages.remove(new Integer(getViewComponent(intViewComponentId).getReference()));
} catch (Exception exe) {
}
UIConstants.setStatusInfo(rb.getString("comm.removevc.statusinfo"));
}
return retVal;
}
/**
* delete in case of multiselect
* @param entriesPath
* @return
*/
public ArrayList<TreePath> removeViewComponents(TreePath[] entriesPath) {
boolean localVal;
ArrayList<TreePath> deleted = new ArrayList<TreePath>();
// Arrays.<ViewComponentValue> sort(listofVC.toArray(arraysViewComponents), new Comparator<ViewComponentValue>() {
// public int compare(ViewComponentValue o1, ViewComponentValue o2) {
// if ((o1 != null) && (o2 != null)) { return (int) (Integer.valueOf(o2.getViewLevel()) - Integer.valueOf(o1.getViewLevel()));
//
// }
// return 0;
// }
//
// });
try {
for (TreePath treePath : entriesPath) {
localVal = true;
PageNode local = (PageNode) treePath.getLastPathComponent();
byte onlineState = local.getOnline();
int intViewComponentId = local.getViewComponent().getViewComponentId();
try {
ViewIdAndInfoTextValue[] str = getAllChildrenNamesWithUnit(intViewComponentId);
String units = "";
if (str != null && str.length > 0) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length; i++) {
sb.append(str[i].getInfoText().trim()).append("\n");
}
units = sb.toString();
}
if (!units.equalsIgnoreCase("")) {
if (!isUserInRole(UserRights.SITE_ROOT)) {
// dazwischen, damit sparen wir uns das zweite...
String msg = Messages.getString("comm.removevc.containsunitsandcannotremove", units);
JOptionPane.showMessageDialog(UIConstants.getMainFrame(), msg, rb.getString("dialog.title"), JOptionPane.ERROR_MESSAGE);
localVal = false;
}
units = Messages.getString("comm.removevc.header_units", units);
}
if (localVal) {
if (onlineState == Constants.ONLINE_STATUS_UNDEF || onlineState == Constants.ONLINE_STATUS_OFFLINE) {
try {
getClientService().removeViewComponent(Integer.valueOf(intViewComponentId), true);
} catch (Exception e) {
}
}
}
} catch (Exception exe) {
log.error("Error removing vc", exe);
}
if (localVal) {
try {
checkOutPages.remove(new Integer(getViewComponent(intViewComponentId).getReference()));
} catch (Exception exe) {
}
UIConstants.setStatusInfo(rb.getString("comm.removevc.statusinfo"));
}
if (localVal) deleted.add(treePath);
}
} catch (Exception e) {
log.error("Error at multiple delete");
}
return deleted;
}
public ViewComponentValue[] getViewComponentsWithReferenceToViewComponentId(int viewComponentId) {
ViewComponentValue[] vcv = null;
try {
vcv = getClientService().getViewComponentsWithReferenceToViewComponentId(Integer.valueOf(viewComponentId));
} catch (Exception exe) {
}
if (vcv == null) vcv = new ViewComponentValue[0];
return vcv;
}
public ViewComponentValue[] getViewComponedntsThatReferenceThisTeaser(int viewComponentId) {
ViewComponentValue[] vcv = null;
// try {
// FIXME
// }
return vcv;
}
public ViewComponentValue getViewComponent(int viewComponentId) throws Exception {
return getClientService().getViewComponent(Integer.valueOf(viewComponentId));
}
public synchronized ViewComponentValue getViewComponent(int viewComponentId, int depth) throws Exception {
return getClientService().getViewComponentWithDepth(Integer.valueOf(viewComponentId), depth);
}
public ViewComponentValue moveViewComponentUp(int viewComponentId) throws Exception {
return getClientService().moveViewComponentUp(Integer.valueOf(viewComponentId));
}
public ViewComponentValue moveViewComponentDown(int viewComponentId) throws Exception {
return getClientService().moveViewComponentDown(Integer.valueOf(viewComponentId));
}
public ViewComponentValue moveViewComponentLeft(int viewComponentId) throws Exception {
// send mail on moving viewcomponent with unit
if (!this.isUnitAndChangesParentUnitLeft(viewComponentId)) {
log.error(user.getUser().getUserName() + ": moved viewcomponent " + viewComponentId + " left into another unit!");
}
return getClientService().moveViewComponentLeft(Integer.valueOf(viewComponentId));
}
public ViewComponentValue moveViewComponentRight(int viewComponentId) throws Exception {
// send mail on moving viewcomponent with unit
if (!this.isUnitAndChangesParentUnitRight(viewComponentId)) {
log.error(user.getUser().getUserName() + ": moved viewcomponent " + viewComponentId + " right into another unit!");
}
return getClientService().moveViewComponentRight(Integer.valueOf(viewComponentId));
}
private boolean isUnitAndChangesParentUnitLeft(int viewComponentId) throws Exception {
return getClientService().isUnitAndChangesParentUnitLeft(Integer.valueOf(viewComponentId));
}
private boolean isUnitAndChangesParentUnitRight(int viewComponentId) throws Exception {
return getClientService().isUnitAndChangesParentUnitRight(Integer.valueOf(viewComponentId));
}
public void cancelApproval(int viewComponentId) throws Exception {
getClientService().cancelApproval(Integer.valueOf(viewComponentId));
}
public void updateStatus4ViewComponent(ViewComponentValue vcDao) throws Exception {
if (log.isDebugEnabled()) log.debug("updateStatus4ViewComponent");
getClientService().updateStatus4ViewComponent(vcDao);
}
public int createTask(String receiverId, String receiverRole, int unitId, String comment, byte taskType) throws Exception {
// Funzt das jetzt mit null-Pointer?
/*
* int unit = -1; if(a_UnitId != null) { unit = a_UnitId.intValue(); }
*/
return getClientService().createTask(receiverId, receiverRole, Integer.valueOf(unitId), comment, taskType);
}
public void addViewComponentsToTask(int taskId, Integer[] vcIds) throws Exception {
getClientService().addViewComponentsToTask(Integer.valueOf(taskId), vcIds);
}
public void removeViewComponentsFromTask(int taskId, Integer[] vcIds) throws Exception {
getClientService().removeViewComponentsFromTask(Integer.valueOf(taskId), vcIds);
}
public ViewComponentValue getViewComponent4Unit(int unitId) throws Exception {
return getClientService().getViewComponent4Unit(Integer.valueOf(unitId), Integer.valueOf(this.getViewDocumentId()));
}
public ViewComponentValue getViewComponent4Unit(int unitId, int depth) throws Exception {
Integer viewComponentId = getClientService().getViewComponent4Unit(Integer.valueOf(unitId), Integer.valueOf(this.getViewDocumentId())).getViewComponentId();
return getClientService().getViewComponentWithDepth(viewComponentId, depth);
}
// returns true if all parents have status ForDeploy or Deployed
// false else
public boolean isViewComponentPublishable(int viewComponentId) {
return getClientService().isViewComponentPublishable(Integer.valueOf(viewComponentId));
}
public Integer[] getParents4ViewComponent(int viewComponentId) throws Exception {
Integer[] vcdarr = null;
try {
vcdarr = getClientService().getParents4ViewComponent(viewComponentId);
if (vcdarr == null) vcdarr = new Integer[0];
} catch (Exception exe) {
vcdarr = new Integer[0];
}
return vcdarr;
}
public ContentValue getContent(int contentId) throws Exception {
ContentValue cdao = getClientService().getContent(Integer.valueOf(contentId));
if (log.isDebugEnabled()) {
log.debug("getContent() " + cdao.getHeading());
}
return cdao;
}
public void updateTemplate(int viewComponentId, String templateName) throws Exception {
getClientService().updateTemplate(Integer.valueOf(viewComponentId), templateName);
getDbHelper().setTemplateName(viewComponentId, templateName);
}
public String getContentTemplateName(int contentId) throws Exception {
String templateName = getDbHelper().getTemplateName(contentId);
if (templateName == null) {
templateName = getClientService().getContentTemplateName(Integer.valueOf(contentId));
getDbHelper().setTemplateName(contentId, templateName);
}
return templateName;
}
/**
* @param contentId
* @return ContentVersionValue[]
*/
public ContentVersionValue[] getAllContentVersionsForContent(int contentId) {
// erst ID Liste ziehen, danach dann in DbHelper �berpr�fen, ob schon
// vorhanden.
try {
ContentVersionValue[] cvd = null;
/*
* if(getDbHelper().checkContentVersionsForContentAviable(contentId)) {
* int[] intContents =
* getContentSession().getAllContentVersionsId(contentId); cvd = new
* ContentVersionDao[intContents.length]; for(int i=0;i<intContents.length;i++) {
* cvd[i] = getDbHelper().getContentVersion(intContents[i]);
* if(cvd[i]==null) { cvd[i] =
* getContentSession().getContentVersion(intContents[i]);
* getDbHelper().setContentVersion(cvd[i].getContentVersionId(),
* contentId, cvd[i]); } } }else{
*/
cvd = getClientService().getAllContentVersions(Integer.valueOf(contentId));
if (cvd == null) cvd = new ContentVersionValue[0];
/*
* for(int i=0;i<cvd.length;i++)
* getDbHelper().setContentVersion(cvd[i].getContentVersionId(),
* contentId, cvd[i]); }
*/
return cvd;
} catch (Exception exe) {
log.error("Error getting all contentversions for content", exe);
return null;
}
}
public ContentVersionValue getContentVersion(int contentVersionId) {
try {
return getClientService().getContentVersion(Integer.valueOf(contentVersionId));
} catch (Exception exe) {
log.error("Error getting contentversion", exe);
return null;
}
}
public void removeAllOldContentVersions(int contentId) {
try {
getClientService().removeAllOldContentVersions(Integer.valueOf(contentId));
} catch (Exception exe) {
log.error("Error removing all old contentversions", exe);
}
}
public void removeContentVersion(int contentVersionId) {
try {
getClientService().removeContentVersion(Integer.valueOf(contentVersionId));
} catch (Exception exe) {
log.error("Error removing content version", exe);
}
}
public Vector getNotReferencedUnits(ViewDocumentValue viewDocumentDao) throws Exception {
UnitValue[] ud = getClientService().getNotReferencedUnits(viewDocumentDao);
return arrayToVector(ud);
}
public Integer[] getAllPictures4Unit(int unitId) throws Exception {
Integer[] udd = getClientService().getAllPictures4Unit(Integer.valueOf(unitId));
if (udd == null) udd = new Integer[0];
return udd;
}
public Vector getAllDocuments4Unit(int unitId) throws Exception {
Integer[] udd = getClientService().getAllDocuments4Unit(Integer.valueOf(unitId));
return arrayToVector(udd);
}
public DocumentSlimValue[] getAllSlimDocumentValues(Integer unitId) throws Exception {
DocumentSlimValue[] dsv = getClientService().getAllSlimDocumentValues(unitId);
if (dsv == null) dsv = new DocumentSlimValue[0];
return dsv;
}
public DocumentSlimValue[] getAllSlimDocumentValues4ViewComponent(Integer viewComponentId) throws Exception {
DocumentSlimValue[] dsv = getClientService().getAllSlimDocumentValues4ViewComponent(viewComponentId);
if (dsv == null) dsv = new DocumentSlimValue[0];
return dsv;
}
public PictureSlimstValue[] getAllSlimPictureValues(Integer unitId) throws Exception {
PictureSlimstValue[] psv = getClientService().getAllSlimPictures4Unit(unitId);
if (psv == null) psv = new PictureSlimstValue[0];
return psv;
}
public PictureSlimstValue[] getAllSlimPictureValues4ViewComponent(Integer viewComponentId) throws Exception {
PictureSlimstValue[] psv = getClientService().getAllSlimPictures4View(viewComponentId);
if (psv == null) psv = new PictureSlimstValue[0];
return psv;
}
public ContentValue checkOut(int contentId, boolean force) throws UserException, AlreadyCheckedOutException {
try {
ContentValue cdao = getClientService().checkOut(Integer.valueOf(contentId), force);
// will be only called, if the content was been successfully
// checkedOut!
checkOutPages.add(Integer.valueOf(contentId));
return cdao;
} catch (Exception exception) {
if (exception != null && ((exception.getCause()).getCause() instanceof AlreadyCheckedOutException)) {
throw (AlreadyCheckedOutException) exception.getCause().getCause();
}
if (exception.getCause() != null && exception.getCause() instanceof AlreadyCheckedOutException) {
throw (AlreadyCheckedOutException) exception.getCause();
}
UserException ue = new UserException("Error checking out: " + exception.getMessage());
log.error("Error checking out ", exception);
throw ue;
}
}
/**
* check-in or save
*/
public void checkIn(ContentValue contentDao) throws Exception {
if (!contentDao.isCreateNewVersion()) {
dbHelper.deleteContentVersions(contentDao.getContentId().intValue());
}
try {
checkOutPages.remove(new Integer(contentDao.getContentId().intValue()));
} catch (Exception exe) {
}
getClientService().checkIn(contentDao);
if (log.isDebugEnabled()) {
log.debug("contentDao " + contentDao.getHeading());
}
}
/**
* cancel
*/
public void checkIn(int contentId) {
try {
getClientService().checkIn4ContentId(Integer.valueOf(contentId));
checkOutPages.remove(new Integer(contentId));
} catch (Exception exe) {
log.error("Error checking in", exe);
}
}
public void saveContent(int contentId, String content) throws Exception {
getClientService().saveContent(Integer.valueOf(contentId), content);
}
public void removeDocument(int documentId) throws Exception {
try {
getClientService().removeDocument(Integer.valueOf(documentId));
} catch (RemoteInvocationFailureException e) {
throw (Exception) e.getCause();
}
}
/**
* @deprecated Causes a OutOfMemory on the Serverside if called many times.
* @param documentId
* @return the name of this document
* @throws java.lang.Exception
*/
@Deprecated
public String getDocumentName(int documentId) throws Exception {
if (getDbHelper().checkDocumentName(documentId)) {
String tempString = getClientService().getDocumentName(Integer.valueOf(documentId));
getDbHelper().setDocumentName(documentId, tempString);
return tempString;
}
return getDbHelper().getDocumentName(documentId);
}
public byte[] getPictureData(int pictureId) throws Exception {
return getClientService().getPictureData(Integer.valueOf(pictureId));
}
public PictureSlimValue getPicture(int pictureId) throws Exception {
return getClientService().getPicture(Integer.valueOf(pictureId));
}
public String getFileName(int pictureId) throws Exception {
return getClientService().getPictureFileName(Integer.valueOf(pictureId));
}
public String getAltText(int pictureId) throws Exception {
return getClientService().getPictureAltText(Integer.valueOf(pictureId));
}
public void updatePictureAltText(int pictureId, String altText) throws Exception {
getClientService().updatePictureAltText(Integer.valueOf(pictureId), altText);
}
public boolean getPictureThumbnailPopup(Integer pictureId) {
return getClientService().getPictureThumbnailPopup(pictureId);
}
public void updatePictureThumbnailPopup(boolean withThumbnailPopup, Integer pictureId) {
getClientService().updatePictureThumbnailPopup(withThumbnailPopup, pictureId);
}
public void updatePictureData(int pictureId, byte[] picture, String mimeType, byte[] thumbnail) throws Exception {
getClientService().updatePictureData(Integer.valueOf(pictureId), picture, mimeType, thumbnail);
}
public byte[] getThumbnail(int pictureId) throws Exception {
String thumbPath = "ejbimage?typ=t&id=" + pictureId;
File svgFile = new File(Constants.SVG_CACHE + this.encodeSvgImageName(thumbPath) + ".png");
byte[] svgByte = null;
if (svgFile.exists()) {
svgByte = new byte[(int) svgFile.length()];
try {
new FileInputStream(svgFile).read(svgByte);
} catch (Exception exe) {
throw new UserException("First found image cant be found anymore at location " + svgFile.getAbsoluteFile());
}
} else {
try {
File cacheDir = new File(Constants.SVG_CACHE);
cacheDir.mkdirs();
// Read the response body.
svgByte = getClientService().getPicture(pictureId).getThumbnail();
// svgByte =
// getContentService().getThumbnail(Integer.valueOf(pictureId));
OutputStream out = new BufferedOutputStream(new FileOutputStream(svgFile));
out.write(svgByte, 0, svgByte.length);
out.flush();
out.close();
} catch (Exception e) {
log.error("Image with Id " + pictureId + " has not been found");
}
}
return svgByte;
}
/**
* Used in case of overwrite picture. Refreshed the cache for that image
* @param pictureId
*/
public void updateCachedImage(Integer pictureId) {
String thumbPath = "ejbimage?typ=t&id=" + pictureId;
File svgFile = new File(Constants.SVG_CACHE + this.encodeSvgImageName(thumbPath) + ".png");
byte[] svgByte = null;
try {
File cacheDir = new File(Constants.SVG_CACHE);
cacheDir.mkdirs();
svgByte = getClientService().getPicture(pictureId).getThumbnail();
OutputStream out = new BufferedOutputStream(new FileOutputStream(svgFile));
out.write(svgByte, 0, svgByte.length);
out.flush();
out.close();
} catch (IOException ioe) {
log.warn("Image with Id " + pictureId + " has not been found - " + ioe.getStackTrace());
}
}
public void removePicture(int pictureId) throws Exception {
try {
getClientService().removePicture(Integer.valueOf(pictureId));
} catch (RemoteInvocationFailureException e) {
throw (Exception) e.getCause();
}
}
public int addPicture2Unit(int unitId, byte[] thumbnail, byte[] picture, String mimeType, String altText, String pictureName, String title) throws Exception {
return getClientService().addPicture2Unit(Integer.valueOf(unitId), thumbnail, picture, mimeType, altText, pictureName, title);
}
public int addPicture2ViewComponent(int viewComponentId, byte[] thumbnail, byte[] picture, String mimeType, String altText, String pictureName, String title) throws Exception {
return getClientService().addPicture2ViewComponent(Integer.valueOf(viewComponentId), thumbnail, picture, mimeType, altText, pictureName, title);
}
public int addPicture2Unit(int unitId, byte[] thumbnail, byte[] picture, byte[] preview, String mimeType, String altText, String pictureName, String title) throws Exception {
return getClientService().addPictureWithPreview2Unit(Integer.valueOf(unitId), thumbnail, picture, preview, mimeType, altText, pictureName, title);
}
public void setPicture4Unit(int unitId, int pictureId) throws Exception {
getClientService().setPicture4Unit(Integer.valueOf(unitId), Integer.valueOf(pictureId));
}
public void setPicture4Person(long personId, int pictureId) throws Exception {
getClientService().setPicture4Person(Long.valueOf(personId), Integer.valueOf(pictureId));
}
public ViewComponentValue saveViewComponent(ViewComponentValue viewComponentValue) throws ViewComponentLinkNameAlreadyExisting, ViewComponentLinkNameIsEmptyException, ViewComponentNotFound, UserException {
ViewComponentValue vcReturn = null;
try {
vcReturn = getClientService().saveViewComponent(viewComponentValue);
} catch (Exception ue) {
/*
* if (this.isExceptionOfType(ue,
* "ViewComponentLinkNameAlreadyExisting")) {
* ViewComponentLinkNameAlreadyExisting pd = new
* ViewComponentLinkNameAlreadyExisting(); throw pd; } else if
* (this.isExceptionOfType(ue, "ViewComponentNotFound")) {
* ViewComponentNotFound pd = new
* ViewComponentNotFound(); throw pd; } else if
* (this.isExceptionOfType(ue, "ViewComponentLinkNameIsEmpty")) {
* ViewComponentLinkNameIsEmptyException pd = new
* ViewComponentLinkNameIsEmptyException(); throw pd; }
*/
log.error("Error saving vc", ue);
throw new UserException(ue);
}
return vcReturn;
}
public Object[] getPerson4Name(String firstName, String lastName) throws Exception {
return getClientService().getPerson4Name(firstName, lastName);
}
/**
* Component department
*
* @param name
* @throws Exception
*/
public long createDepartment(String name, int unitId) throws Exception {
return getClientService().createDepartment(name, Integer.valueOf(unitId));
}
public long createPerson(PersonValue value) throws Exception {
return getClientService().createPerson(value);
}
/**
* Component address
*/
public long createAddress(AddressValue value) throws Exception {
return getClientService().createAddress(value);
}
/**
* Component get all departments
*
* @return departments daos
* @throws Exception
*/
public Vector getDepartments4Name(String name) throws Exception {
return arrayToVector(getClientService().getDepartments4Name(name));
}
/**
* Component get all departments
*
* @return departments daos
* @throws Exception
*/
public DepartmentValue getDepartment(long departmentId) throws Exception {
return getClientService().getDepartment(Long.valueOf(departmentId));
}
/**
* Component get all units
*
* @return unit daos
* @throws Exception
*/
public Vector getUnits4Name(String name) throws Exception {
return arrayToVector(getClientService().getUnits4Name(name));
}
public UnitValue[] getUnits4User(String userName) throws Exception {
UnitValue[] units = getClientService().getUnits4User(userName);
if (units == null) units = new UnitValue[0];
return units;
}
/**
* Component get person
*
* @param personId
* @return personValue
* @throws Exception
*/
public PersonValue getPerson(long personId) throws Exception {
return getClientService().getPerson(Long.valueOf(personId));
}
public Vector getAllViewComponents4Status(int status) throws Exception {
return arrayToVector(getClientService().getAllViewComponents4Status(Integer.valueOf(this.getViewDocumentId()), status));
}
/**
*
* @param unitId
* @return Editions related to the given UnitID and the selected
* ViewDocumentId
* @throws Exception
*/
public Vector getEditions(int unitId) throws Exception {
EditionValue[] ud = getClientService().getEditions(Integer.valueOf(unitId), Integer.valueOf(this.getViewDocumentId()));
return arrayToVector(ud);
}
// /*
// * Deploy
// */
// public void createEdition(String comment, int rootViewComponentId, boolean deploy, boolean showMessage) throws UserException {
// try {
// getClientService().createEdition(comment, Integer.valueOf(rootViewComponentId), deploy, showMessage);
// } catch (Exception ue) {
// log.error("Error creating edition", ue);
// throw new UserException(ue);
// }
// }
/*
* Deploy - new
*
* @param type - 0: fulldeploy, 1: unitdeploy, 2: pagedeploy, 3: rootdeploy
*/
public void createEdition(String comment, int rootViewComponentId, boolean deploy, boolean showMessage, int type) throws UserException {
try {
getClientService().createEdition(comment, Integer.valueOf(rootViewComponentId), deploy, showMessage, type);
} catch (Exception ue) {
log.error("Error creating edition", ue);
throw new UserException(ue);
}
}
public void createEditionWithoutDeploy(String comment, int rootViewComponentId) throws UserException {
try {
getClientService().createEditionWithoutDeploy(comment, rootViewComponentId);
} catch (Exception ue) {
log.error("Error creating edition", ue);
throw new UserException(ue);
}
}
public void removeEdition(int editionId) throws Exception {
getClientService().removeEdition(Integer.valueOf(editionId));
}
public void setActiveEdition(int editionId) throws Exception {
getClientService().setActiveEdition(Integer.valueOf(editionId), true);
}
/**
*
* @param unitId
* @param status
* @return vector of ViewComponentValue
*/
public Vector getViewComponents4Status(int unitId, int status) throws Exception {
ViewComponentValue[] vcv = getClientService().getAllViewComponents4UnitAndStatus(Integer.valueOf(unitId), Integer.valueOf(this.getViewDocumentId()), status);
Vector<ViewComponentValue> v = new Vector<ViewComponentValue>(vcv.length);
for (int i = 0; i < vcv.length; i++) {
v.add(vcv[i]);
}
return v;
}
/**
* Returns all children of a ViewComponent, that contains a unit.
*
* @param viewComponentId
* The viewComponentId
* @return Array of Strings[][]
* <ul>
* <li>[i][0] contains ViewComponentId</li>
* <li>[i][1] contains UnitId</li>
* <li>[i][2] contains UnitName</li>
* </ul>
*/
public ViewIdAndUnitIdValue[] getAllViewComponentsWithUnits(int viewComponentId) {
ViewIdAndUnitIdValue[] retVal = null;
try {
retVal = getClientService().getAllViewComponentsWithUnits(Integer.valueOf(viewComponentId));
} catch (Exception exe) {
log.error("Error getting all vc with units", exe);
}
if (retVal == null) retVal = new ViewIdAndUnitIdValue[0];
return retVal;
}
/**
* Component get address
*
* @param addressId
* @return address data
* @throws Exception
*/
public AddressValue getAddress(long addressId) throws Exception {
return getClientService().getAddress(Long.valueOf(addressId));
}
/**
* Component get Talktime
*
* @param talktimeId
* @return talktime data
* @throws Exception
*/
public TalktimeValue getTalktime(long talktimeId) throws Exception {
return getClientService().getTalktime(Long.valueOf(talktimeId));
}
public ViewComponentValue insertViewComponent(int childId, String reference, String displayLinkName, String linkDescription, int position) throws Exception {
return getClientService().insertViewComponent(Integer.valueOf(childId), Integer.valueOf(this.getViewDocumentId()), reference, displayLinkName, linkDescription, position);
}
public ViewComponentValue addFirstViewComponent(int parentId, String reference, String displayLinkName, String linkDescription) throws Exception {
return getClientService().addFirstViewComponent(Integer.valueOf(parentId), Integer.valueOf(this.getViewDocumentId()), reference, displayLinkName, linkDescription);
}
public void setTreeModel(CmsTreeModel treeModel) {
this.treeModel = treeModel;
}
public void setStatus4ViewComponentId(int vcId, int status) {
try {
PageNode entry = treeModel.findEntry4Id((PageNode) treeModel.getRoot(), vcId);
entry.setStatus(status);
} catch (Exception ex) {
}
}
public PageNode findEntry4Id(int id) {
return treeModel.findEntry4Id((PageNode) treeModel.getRoot(), id);
}
public ViewIdAndInfoTextValue[] getAllChildrenNamesWithUnit(int viewComponentId) {
ViewIdAndInfoTextValue[] retarr = null;
try {
retarr = getClientService().getAllChildrenNamesWithUnit(Integer.valueOf(viewComponentId));
} catch (Exception exe) {
log.error("Error getallchildrennameswithunit", exe);
}
return retarr;
}
public String[] getAnchors(int contentId) {
String[] retArr = null;
try {
retArr = getClientService().getAnchors(Integer.valueOf(contentId));
} catch (Exception exe) {
log.error("Error getting anchors", exe);
}
return retArr;
}
public SiteValue createSite(SiteValue vo) {
try {
return getClientService().createSite(vo);
} catch (Exception exe) {
log.error("Error creating site", exe);
return null;
}
}
public void removeSite(int siteId) {
try {
getClientService().removeSite(Integer.valueOf(siteId));
} catch (Exception exe) {
log.error("Error removing site", exe);
}
}
public void updateSite(SiteValue vo) {
try {
getClientService().updateSite(vo);
} catch (Exception exe) {
log.error("Error updating site", exe);
}
}
public SiteValue[] getAllSites() {
try {
return getClientService().getAllSites();
} catch (Exception exe) {
log.error("Error get all sites", exe);
return new SiteValue[0];
}
}
public SiteValue[] getAllSites4CurrentUser() {
try {
return getClientService().getAllSites4CurrentUser();
} catch (Exception exe) {
log.error("Error get all sites for current user", exe);
return new SiteValue[0];
}
}
public UserValue[] getAllUsersForAllSites() {
try {
return getClientService().getAllUsersForAllSites();
} catch (Exception exe) {
log.error("Error getAllUsersForAllSites", exe);
return new UserValue[0];
}
}
public UserValue[] getAllUsers4OwnSites() {
try {
return getClientService().getAllUserOwnSites();
} catch (Exception exe) {
log.error("Error getAllUsers4OwnSites", exe);
return new UserValue[0];
}
}
public String[] getConnectedUsersForSite(int siteId) {
try {
return getClientService().getConnectedUsersForSite(Integer.valueOf(siteId));
} catch (Exception exe) {
log.error("Error getConnectedUsersForSite", exe);
return new String[0];
}
}
public void setConnectedUsersForSite(int siteId, String[] userIds) {
try {
getClientService().setConnectedUsersForSite(Integer.valueOf(siteId), userIds);
} catch (Exception exe) {
log.error("Error set connected users for site", exe);
}
}
public void setSiteConfig(int siteId, String config) {
try {
getClientService().setSiteConfig(Integer.valueOf(siteId), config);
if (siteId == activeSiteId) {
user.setSiteConfigXML(config);
Parameters.loadRolesetForActiveSite();
}
} catch (Exception exe) {
log.error("Error set site config", exe);
}
}
public String getSiteConfig(int siteId) {
try {
return getClientService().getSiteConfig(Integer.valueOf(siteId));
} catch (Exception exe) {
log.error("Error getsiteconfig", exe);
return "";
}
}
public HostValue createHost(String hostName) throws Exception {
return (getClientService().createHost(hostName));
}
public HostValue[] getAllHosts() {
HostValue[] hv = null;
try {
hv = getClientService().getAllHosts();
if (hv == null) hv = new HostValue[0];
} catch (Exception e) {
log.error(e.getMessage());
}
return (hv);
}
public HostValue[] getHosts() {
HostValue[] hv = null;
try {
hv = getClientService().getHosts();
if (hv == null) hv = new HostValue[0];
} catch (Exception e) {
log.error(e.getMessage());
}
return hv;
}
public HostValue[] getAllUnassignedHosts() {
HostValue[] hv = null;
try {
hv = getClientService().getAllUnassignedHosts();
if (hv == null) hv = new HostValue[0];
} catch (Exception e) {
log.error(e.getMessage());
}
return (hv);
}
public HostValue[] getHostsForSite(int siteId) {
HostValue[] hv = null;
try {
hv = getClientService().getHostsForSite(Integer.valueOf(siteId));
if (hv == null) hv = new HostValue[0];
} catch (Exception e) {
log.error(e.getMessage());
}
return hv;
}
public void removeHost(String hostName) {
try {
getClientService().removeHost(hostName);
} catch (Exception e) {
log.error(e.getMessage());
}
}
public SiteValue getSiteForName(String siteName) {
SiteValue sv = null;
try {
sv = getClientService().getSiteForName(siteName);
} catch (Exception e) {
log.error(e.getMessage());
}
return (sv);
}
public void setSite(String hostName, String siteName) {
try {
getClientService().setSite(hostName, siteName);
} catch (Exception e) {
log.error(e.getMessage());
}
}
public void setSite(String hostName, int siteId) {
try {
getClientService().setSite(hostName, Integer.valueOf(siteId));
} catch (Exception e) {
log.error(e.getMessage());
}
}
public void setStartPage(String hostName, String vcId) {
try {
getClientService().setStartPage(hostName, vcId);
} catch (Exception e) {
log.error(e.getMessage());
}
}
public String getSite(String hostName) {
String result = "";
try {
result = getClientService().getSite(hostName);
} catch (Exception e) {
log.error(e.getMessage());
}
return (result);
}
public SiteValue getCurrentSite() {
try {
return getClientService().getCurrentSite(Integer.valueOf(this.getSiteId()));
} catch (Exception e) {
log.error("Error getting current site: " + e.getMessage(), e);
}
return null;
}
public String getStartPage(String hostName) {
String result = "";
try {
result = getClientService().getStartPage(hostName);
} catch (Exception e) {
log.error(e.getMessage());
}
return (result);
}
public void removeSiteFromHost(String hostName) {
try {
getClientService().removeSiteFromHost(hostName);
} catch (Exception e) {
log.error(e.getMessage());
}
}
public void removeStartpageFromHost(String hostName) {
try {
getClientService().removeStartpageFromHost(hostName);
} catch (Exception e) {
log.error(e.getMessage());
}
}
public void setRedirectUrl(String hostName, String redirectUrl) {
try {
getClientService().setRedirectUrl(hostName, redirectUrl);
} catch (Exception e) {
log.error(e.getMessage());
}
}
public void setRedirectHost(String hostName, String redirectHostName) {
try {
getClientService().setRedirectHost(hostName, redirectHostName);
} catch (Exception e) {
log.error(e.getMessage());
}
}
public void setLiveServer(String hostName, boolean liveServer) {
try {
getClientService().setLiveServer(hostName, liveServer);
} catch (Exception e) {
log.error(e.getMessage());
}
}
/* Safeguard start */
public void addSimplePwRealmToVC(Integer simplePwRealmId, Integer viewComponentId, String neededRole, Integer loginPageId) throws Exception {
if (loginPageId == null) loginPageId = new Integer(-1);
getClientService().addSimplePwRealmToVC(simplePwRealmId, viewComponentId, neededRole, loginPageId);
}
public void editSimplePwRealm(RealmSimplePwValue simplePwRealmValue) {
getClientService().editSimplePwRealm(simplePwRealmValue);
}
public void addSqlDbRealmToVC(Integer jdbcRealmId, Integer viewComponentId, String neededRole, Integer loginPageId) throws Exception {
if (loginPageId == null) loginPageId = new Integer(-1);
getClientService().addSqlDbRealmToVC(jdbcRealmId, viewComponentId, neededRole, loginPageId);
}
public int addSimpleRealmToSite(String realmName, int siteId, String loginPageId) {
int pk = -1;
try {
pk = getClientService().addSimpleRealmToSite(realmName, Integer.valueOf(siteId), loginPageId);
} catch (Exception e) {
log.error(e.getMessage());
}
return pk;
}
public RealmSimplePwValue[] getSimplePwRealmsForUser(String user) {
RealmSimplePwValue[] val = null;
val = getClientService().getSimplePwRealmsForUser(user);
if (val == null) {
val = new RealmSimplePwValue[0];
}
return val;
}
public RealmSimplePwValue[] getSimplePwRealmsForSite(Integer siteId) {
RealmSimplePwValue[] val = null;
try {
val = getClientService().getSimplePwRealmsForSite(siteId);
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
if (val == null) {
val = new RealmSimplePwValue[0];
}
return val;
}
public RealmSimplePwValue[] getSimplePwRealms4CurrentUser() {
RealmSimplePwValue[] val = null;
try {
val = getClientService().getSimplePwRealms4CurrentUser(new Integer(activeSiteId));
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
return val;
}
public RealmSimplePwUserValue[] getUserForSimplePwRealm(Integer simplePwRealmId) {
RealmSimplePwUserValue[] val = null;
try {
val = getClientService().getUserForSimplePwRealm(simplePwRealmId);
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
if (val == null) {
val = new RealmSimplePwUserValue[0];
}
return val;
}
public int addUserToSimpleRealm(Integer simplePwRealmId, RealmSimplePwUserValue simplePwRealmUserValue) {
int pk = -1;
try {
pk = getClientService().addUserToSimpleRealm(simplePwRealmId, simplePwRealmUserValue);
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
return pk;
}
public boolean deleteSimplePwRealmUser(Integer simplePwRealmUserId) {
boolean del = false;
try {
del = getClientService().deleteSimplePwRealmUser(simplePwRealmUserId);
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
return del;
}
public ActiveRealmValue getActiveRealm(Integer viewComponentId) {
ActiveRealmValue val = new ActiveRealmValue(false, false, false, false, false, -1, "", "", null);
try {
val = getClientService().getActiveRealm(viewComponentId);
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
return val;
}
public Integer getFirstProtectedParentId(Integer viewComponentId) {
try {
return getClientService().getFirstProtectedParentId(viewComponentId);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return null;
}
public boolean deleteRealmAtVC(Integer viewComponentId) {
boolean ret = false;
try {
ret = getClientService().deleteRealmAtVC(viewComponentId);
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
return ret;
}
public Integer addSqlDbRealmToSite(Integer siteId, RealmJdbcValue jdbcRealmValue) {
Integer ret = new Integer(-1);
try {
ret = getClientService().addSqlDbRealmToSite(siteId, jdbcRealmValue);
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
return ret;
}
public RealmJdbcValue[] getSqlDbRealmsForSite(Integer siteId) {
RealmJdbcValue[] val = null;
try {
val = getClientService().getSqlDbRealmsForSite(siteId);
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
return val;
}
public boolean deleteSqlDbRealm(Integer jdbcRealmId) {
boolean del = false;
try {
del = getClientService().deleteSqlDbRealm(jdbcRealmId);
} catch (RuntimeException rex) {
log.error(rex.getMessage());
}
return del;
}
public void editSqlDbRealm(RealmJdbcValue jdbcRealmValue) {
try {
getClientService().editSqlDbRealm(jdbcRealmValue);
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
public Integer addLdapRealmToSite(Integer siteId, RealmLdapValue ldapRealmValue) {
Integer pk = new Integer(-1);
try {
pk = getClientService().addLdapRealmToSite(siteId, ldapRealmValue);
} catch (Exception ex) {
log.error(ex.getMessage());
}
return pk;
}
public void deleteLdapRealm(Integer ldapRealmId) {
try {
getClientService().deleteLdapRealm(ldapRealmId);
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
public void editLdapRealm(RealmLdapValue ldapRealmValue) {
try {
getClientService().editLdapRealm(ldapRealmValue);
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
public RealmLdapValue[] getLdapRealmsForSite(Integer siteId) {
RealmLdapValue[] val = null;
try {
val = getClientService().getLdapRealmsForSite(siteId);
} catch (Exception ex) {
log.error(ex.getMessage());
}
return val;
}
public void addLdapRealmToVC(Integer viewComponentId, Integer ldapRealmId, String neededRole, Integer loginPageId) {
try {
if (loginPageId == null) loginPageId = new Integer(-1);
getClientService().addLdapRealmToVC(viewComponentId, ldapRealmId, neededRole, loginPageId);
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
public Integer addJaasRealmToSite(Integer siteId, RealmJaasValue jaasRealmValue) {
Integer pk = new Integer(-1);
try {
pk = getClientService().addJaasRealmToSite(siteId, jaasRealmValue);
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
}
return pk;
}
public void deleteJaasRealm(Integer jaasRealmId) {
try {
getClientService().deleteJaasRealm(jaasRealmId);
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
public void editJaasRealm(RealmJaasValue jaasRealmValue) {
try {
getClientService().editJaasRealm(jaasRealmValue);
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
public RealmJaasValue[] getJaasRealmsForSite(Integer siteId) {
RealmJaasValue[] val = null;
try {
val = getClientService().getJaasRealmsForSite(siteId);
} catch (Exception ex) {
log.error(ex.getMessage());
}
return val;
}
public void addJaasRealmToVC(Integer viewComponentId, Integer jaasRealmId, String neededRole, Integer loginPageId) {
try {
if (loginPageId == null) loginPageId = new Integer(-1);
getClientService().addJaasRealmToVC(viewComponentId, jaasRealmId, neededRole, loginPageId);
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
/* Safeguard end */
public void addAccessRoleToVC(String accessRole, Integer viewComponentId, Integer loginPageId) throws Exception {
getClientService().addAccessRoleToViewComponent(viewComponentId, accessRole, loginPageId);
}
/**
*
*/
private class OkListener implements ActionListener {
private final PanCheckInPages pan;
private final JDialog dlg;
public OkListener(PanCheckInPages pan, JDialog dlg) {
this.pan = pan;
this.dlg = dlg;
}
public void actionPerformed(ActionEvent e) {
dlg.setVisible(false);
ModifiedPagesTableModel model = pan.getModel();
Iterator it = model.getDataVector().iterator();
while (it.hasNext()) {
Object[] elements = (Object[]) it.next();
if (((Boolean) elements[0]).booleanValue()) {
try {
checkIn((ContentValue) elements[4]);
} catch (Exception ex) {
log.error(ex.getMessage());
}
} else {
try {
checkIn(((ContentValue) elements[4]).getContentId().intValue());
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
}
try {
if (log.isDebugEnabled()) {
log.debug("Calling logout on server");
}
getClientService().logout();
} catch (Exception exe) {
}
checkOutPages.clear();
log.info("Goodbye!");
}
}
public String getSvgUrl(String svgContent) throws UserException {
File svgFile = new File(Constants.SVG_CACHE + this.encodeSvgImageName(svgContent) + ".png");
if (svgFile.exists()) {
return svgFile.getAbsolutePath();
}
try {
fetchRemoteSvg(svgContent, svgFile);
} catch (Exception e) {
UserException ue = new UserException("Error fetching svg-url: " + e.getMessage());
if (log.isDebugEnabled()) {
log.debug("svgContent: " + svgContent);
log.debug("svgFile: " + Constants.SVG_CACHE + this.encodeSvgImageName(svgContent) + ".png");
log.debug("svgUrl: " + Constants.CMS_PATH_WYSIWYGIMAGE + svgContent);
}
log.error("Error fetching svg-url: ", e);
throw ue;
}
return svgFile.getAbsolutePath();
}
private byte[] fetchRemoteSvg(String svgUrl, File svgFile) throws Exception {
// create directory if it does not exist
File cacheDir = new File(Constants.SVG_CACHE);
cacheDir.mkdirs();
// Read the response body.
byte[] svgData = HttpClientWrapper.getInstance().getByte(Constants.CMS_PATH_WYSIWYGIMAGE + svgUrl);
// svgData = this.getSizedThumbNail(svgData);
OutputStream out = new BufferedOutputStream(new FileOutputStream(svgFile));
out.write(svgData, 0, svgData.length);
out.flush();
out.close();
return svgData;
}
public void clearSvgCache() {
File cacheDir = new File(Constants.SVG_CACHE);
this.delete(cacheDir);
}
/**
* Recursively deletes a directory (or file)
*
* @param file
*/
private void delete(File file) {
if (file.isDirectory()) {
String[] list = file.list();
for (int i = 0; i < list.length; i++) {
delete(new File(file, list[i]));
}
}
file.delete();
}
// Admin SiteGroups
public SiteValue[] getAllNotAssignedSites() {
try {
return this.getClientService().getAllNotAssignedSites();
} catch (Exception e) {
log.error("Error getting all not assigned to a SiteGroup Sites: " + e.getMessage(), e);
}
return new SiteValue[0];
}
public SiteValue[] getSites4SiteGroup(SiteGroupValue siteGroupValue) {
try {
return this.getClientService().getSites4SiteGroup(siteGroupValue);
} catch (Exception e) {
log.error("Error getting all Sites for SiteGroup " + siteGroupValue.getSiteGroupId() + ": " + e.getMessage(), e);
}
return new SiteValue[0];
}
public SiteGroupValue[] getAllSiteGroups() {
try {
return this.getClientService().getAllSiteGroups();
} catch (Exception e) {
log.error("Error loading all SiteGroups: " + e.getMessage(), e);
}
return new SiteGroupValue[0];
}
public SiteGroupValue createSiteGroup(SiteGroupValue value) {
try {
return this.getClientService().createSiteGroup(value);
} catch (Exception e) {
log.error("Error creating SiteGroups: " + e.getMessage(), e);
return null;
}
}
public void updateSiteGroup(SiteGroupValue value) {
try {
this.getClientService().updateSiteGroup(value);
} catch (Exception e) {
log.error("Error updating SiteGroups: " + e.getMessage(), e);
}
}
public void removeSiteGroup(SiteGroupValue value) {
try {
this.getClientService().removeSiteGroup(value);
} catch (Exception e) {
log.error("Error loading all SiteGroups: " + e.getMessage(), e);
}
}
// -- Admin SiteGroups
public SiteValue[] getAllRelatedSites(int siteId) {
try {
return this.getClientService().getAllRelatedSites(Integer.valueOf(siteId));
} catch (Exception e) {
log.error("Error getting all related Sites for Site " + siteId + ": " + e.getMessage(), e);
}
return null;
}
public ViewDocumentValue[] getAllViewDocuments4Site(int siteId) {
try {
return this.getClientService().getAllViewDocuments4Site(Integer.valueOf(siteId));
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return null;
}
public ViewDocumentValue getViewDocument4ViewComponent(int viewComponentId) {
try {
return this.getClientService().getViewDocument4ViewComponent(Integer.valueOf(viewComponentId));
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return null;
}
public UserUnitsGroupsValue[] getUserUnitsGroups4UnitAndGroup(int unitId, int groupId) throws Exception {
return getClientService().getUserUnitsGroups4UnitAndGroup(Integer.valueOf(unitId), Integer.valueOf(groupId));
}
// TODO: replace by better algorithm with diffusion
private int encodeSvgImageName(String svgImageName) {
if (svgImageName != null && !"".equalsIgnoreCase(svgImageName)) return svgImageName.hashCode();
return 0;
}
/**
* @see de.juwimm.cms.util.Communication#searchXmlByUnit(int,
* java.lang.String, boolean)
*/
public XmlSearchValue[] searchXmlByUnit(int unitId, String xpathQuery, boolean parentSearch) throws Exception {
try {
XmlSearchValue[] value = getClientService().searchXmlByUnit(Integer.valueOf(unitId), Integer.valueOf(this.getViewDocumentId()), xpathQuery, parentSearch);
if (value != null) return value;
return new XmlSearchValue[0];
} catch (Exception e) {
log.warn("Error calling searchXmlByUnit - unitId " + unitId + " xPathQuery \"" + xpathQuery + "\" parentSearch " + parentSearch + ": " + e.getMessage(), e);
return new XmlSearchValue[0];
}
}
/** @see de.juwimm.cms.util.Communication#searchXml(int, java.lang.String) */
public XmlSearchValue[] searchXml(int siteId, String xpathQuery) throws Exception {
try {
XmlSearchValue[] value = getClientService().searchXml(Integer.valueOf(siteId), xpathQuery);
if (value != null) return value;
return new XmlSearchValue[0];
} catch (Exception e) {
log.warn("Error calling searchXml - siteId " + siteId + " xPathQuery \"" + xpathQuery + "\": " + e.getMessage(), e);
return new XmlSearchValue[0];
}
}
public UnitValue[] getAllUnits4Site(Integer siteId) {
try {
return getClientService().getAllUnits4Site(siteId);
} catch (Exception e) {
log.error("Error getting all units for site " + siteId + ": " + e.getMessage(), e);
}
return new UnitValue[0];
}
public ShortLinkValue[] getAllShortLinks4Site(Integer siteId) {
try {
return getClientService().getAllShortLinks4Site(siteId);
} catch (Exception e) {
log.error("Error getting all shortLinks for site " + siteId + ": " + e.getMessage(), e);
}
return new ShortLinkValue[0];
}
public HostValue saveHost(HostValue hostValue) {
try {
hostValue = getClientService().saveHost(hostValue);
} catch (Exception e) {
log.error("Error saving host " + hostValue.getHostName() + ": " + e.getMessage(), e);
}
return hostValue;
}
public ShortLinkValue createShortLink(ShortLinkValue shortLinkValue) {
try {
shortLinkValue = getClientService().createShortLink(shortLinkValue);
} catch (Exception e) {
log.error("Error creating shortLinkValue " + shortLinkValue.getShortLink() + ": " + e.getMessage(), e);
}
return shortLinkValue;
}
public ShortLinkValue saveShortLink(ShortLinkValue shortLinkValue) {
try {
shortLinkValue = getClientService().saveShortLink(shortLinkValue);
} catch (Exception e) {
log.error("Error saving shortLinkValue " + shortLinkValue.getShortLink() + ": " + e.getMessage(), e);
}
return shortLinkValue;
}
public void deleteShortLink(Integer shortLinkId) {
try {
getClientService().deleteShortLink(shortLinkId);
} catch (Exception e) {
log.error("Error deleting shortLinkValue " + shortLinkId + ": " + e.getMessage(), e);
}
}
public void exportXlsPersonData(File outputFile) {
try {
log.info("exportXlsPersonData");
ClientServiceSpring cs = getClientService();
InputStream is = cs.exportXlsPersonData();
FileOutputStream fos = new FileOutputStream(outputFile);
int read = 0;
while ((read = is.read()) != -1) {
fos.write(read);
}
fos.close();
} catch (Exception exe) {
log.error("Error exporting PersonData", exe);
}
}
/**
* Adds a document in the database for a given unit or viewComponent.<br> If the parent site has a maximum allowed size parameter defined <b>(PARAM_MAX_DOCUMENT_SIZE)</b>, then the file being sent for upload is checked for allowed size. If the size is above the max size, the method throws @InvalidSizeException
* @param documentValue
* @return
*/
public DocumentValue addOrUpdateDocument(DocumentValue documentValue) throws InvalidSizeException{
//maximum document size validation
if(Parameters.getBooleanParameter(Parameters.PARAM_MAX_DOCUMENT_SIZE)){
int maxAllowedSize=-1;
try{
maxAllowedSize=Integer.parseInt(Parameters.getStringParameter(Parameters.PARAM_MAX_DOCUMENT_SIZE));
}catch (NumberFormatException e) {
log.error("Could not load site parameter PARAM_MAX_DOCUMENT_SIZE (problem with int parsing)", e);
}
if(maxAllowedSize>0){
long maxSizeBytes=maxAllowedSize*1024*1024;
if(documentValue.getDocument().length>maxSizeBytes){
throw new InvalidSizeException("The document is larger than the maximum allowed limit for upload");
}
}
}
try {
return getClientService().addOrUpdateDocument(documentValue);
} catch (Exception re) {
log.error("Error importing document " + re.getMessage());
}
return null;
}
/**
* Adds a document in the database for a given unit or viewComponent.<br> If the parent site has a maximum allowed size parameter defined <b>(PARAM_MAX_DOCUMENT_SIZE)</b>, then the file being sent for upload is checked for allowed size. If the size is above the max size, the method throws @InvalidSizeException
* @param file
* @param unitId
* @param viewComponentId
* @param fileName
* @param mimeType
* @param documentId
* @return
*/
public Integer addOrUpdateDocument(File file, Integer unitId, Integer viewComponentId, String fileName, String mimeType, Integer documentId, String password) throws InvalidSizeException{
InputStream fis = null;
//maximum document size validation
if(Parameters.getBooleanParameter(Parameters.PARAM_MAX_DOCUMENT_SIZE)){
int maxAllowedSize=-1;
try{
maxAllowedSize=Integer.parseInt(Parameters.getStringParameter(Parameters.PARAM_MAX_DOCUMENT_SIZE));
}catch (NumberFormatException e) {
log.error("Could not load site parameter PARAM_MAX_DOCUMENT_SIZE (problem with int parsing)", e);
}
if(maxAllowedSize>0){
long maxSizeBytes=maxAllowedSize*1024*1024;
if(file.length()>maxSizeBytes){
throw new InvalidSizeException("The document is larger than the maximum allowed limit for upload");
}
}
}
try {
fis = new BufferedInputStream(new FileInputStream(file));
return getClientService().addOrUpdateDocument(fis, unitId, viewComponentId, fileName, mimeType, documentId, password);
} catch (Exception re) {
log.error("Error importing document " + re.getMessage());
} finally {
IOUtils.closeQuietly(fis);
}
return null;
}
public Integer addOrUpdateDocument(File file, Integer unitId, Integer viewComponentId, String fileName, String mimeType, Integer documentId) {
return addOrUpdateDocument(file, unitId, viewComponentId, fileName, mimeType, documentId, null);
}
/**
* Adds a document in the database for a given unit.
*
* @param file
* @param unitId
* @param fileName
* @param mimeType
* @param documentId
* @return
*/
public Integer addOrUpdateDocument(File file, Integer unitId, String fileName, String mimeType, Integer documentId) {
return addOrUpdateDocument(file, unitId, null, fileName, mimeType, documentId, null);
}
public Integer addOrUpdateDocument(File file, Integer unitId, String fileName, String mimeType, Integer documentId, String password) {
return addOrUpdateDocument(file, unitId, null, fileName, mimeType, documentId, password);
}
/*
* Export of an Edition
*/
public void createEditionForExport(File outputFile, int viewComponentIdWithUnit) throws Exception {
log.info("createEditionForExport ");
InputStream edition = null;
if (viewComponentIdWithUnit <= 0) {
edition = getClientService().exportEditionFull();
} else {
edition = getClientService().exportEditionUnit(Integer.valueOf(viewComponentIdWithUnit));
}
log.info("got answer... ");
if (log.isDebugEnabled()) log.debug("tmpFile " + outputFile.getName());
FileOutputStream fos = new FileOutputStream(outputFile);
IOUtils.copyLarge(edition, fos);
IOUtils.closeQuietly(edition);
IOUtils.closeQuietly(fos);
outputFile = null;
System.gc();
}
public void importEditionFromImport(File file, Integer viewComponentId, boolean useNewIds) {
InputStream fis = null;
try {
fis = new BufferedInputStream(new FileInputStream(file));
getClientService().importEditionFromImport(fis, viewComponentId, useNewIds, -1);
} catch (Exception re) {
log.error("Error importing edition from import", re);
} finally {
IOUtils.closeQuietly(fis);
}
}
public void setDefaultViewDocument(String viewType, String language, Integer siteId) {
getClientService().setDefaultViewDocument(viewType, language, siteId);
}
public ViewDocumentValue getDefaultViewDocument4Site(Integer siteId) {
return getClientService().getDefaultViewDocument4Site(siteId);
}
public ViewComponentValue[] getViewComponentChildren(Integer viewComponentId) {
return getClientService().getViewComponentChildren(viewComponentId);
}
public Integer getPictureIdForUnitAndName(Integer unitId, String name) {
return getClientService().getPictureIdForUnitAndName(unitId, name);
}
public Integer getPictureIdForViewComponentAndName(Integer viewComponentId, String name) {
return getClientService().getPictureIdForViewComponentAndName(viewComponentId, name);
}
public Integer getDocumentIdForNameAndUnit(String name, Integer unitId) {
return getClientService().getDocumentIdForNameAndUnit(name, unitId);
}
public Integer getDocumentIdForNameAndViewComponent(String name, Integer viewComponentId) {
return getClientService().getDocumentIdForNameAndViewComponent(name, viewComponentId);
}
public ViewComponentValue[] moveViewComponentsUp(Integer[] viewComponentsId) {
return getClientService().moveViewComponentsUp(viewComponentsId);
}
public ViewComponentValue[] moveViewComponentsDown(Integer[] viewComponentsId) {
return getClientService().moveViewComponentsDown(viewComponentsId);
}
public ViewComponentValue[] moveViewComponentsLeft(Integer[] viewComponentsId) {
return getClientService().moveViewComponentsLeft(viewComponentsId);
}
public ViewComponentValue[] moveViewComponentsRight(Integer[] viewComponentsId) {
return getClientService().moveViewComponentsRight(viewComponentsId);
}
public HostValue createHost(HostValue hostValue) {
return getClientService().createHost(hostValue);
}
public void updateHost(HostValue hostValue) {
getClientService().updateHost(hostValue);
}
public Map getResources4Unit(Integer unitId, boolean documentsUsed, boolean documentsUnused, boolean picturesUsed, boolean picturesUnused) {
return getClientService().getResources4Unit(unitId, documentsUsed, documentsUnused, picturesUsed, picturesUnused);
}
public Integer getViewComponentChildrenNumber(Integer[] viewComponentsIds) {
return getClientService().getViewComponentChildrenNumber(viewComponentsIds);
}
public void removeResources(Integer[] pictureIds, Integer[] documentIds, boolean forceDeleteHistory) throws Exception {
try {
getClientService().removeResources(pictureIds, documentIds, forceDeleteHistory);
} catch (RemoteInvocationFailureException ex) {
throw (Exception) ex.getCause();
}
}
public ViewComponentValue[] copyViewComponentToParent(Integer parentId, Integer[] viewComponentsIds, Integer position) {
return getClientService().copyViewComponentsToParent(parentId, viewComponentsIds, position);
}
public String getViewComponentXmlComplete(Integer viewComponentId) {
return getClientService().getViewComponentXmlComplete(viewComponentId, "local:8080", true);
}
public ViewComponentValue importViewComponentToParent(Integer parentId, InputStream xmlString, boolean withMedia, boolean withChildren, Integer unitId, boolean useNewIds, Integer siteId, Integer fulldeploy) {
return getClientService().importViewComponent(parentId, xmlString, withMedia, withChildren, unitId, useNewIds, siteId, fulldeploy);
}
public void createViewComponentForExport(File output, int viewComponentId) throws Exception {
InputStream viewComponentStream = null;
/**set view component stream*/
viewComponentStream = getClientService().exportViewComponent(viewComponentId);
FileOutputStream fileOutput = new FileOutputStream(output);
IOUtils.copyLarge(viewComponentStream, fileOutput);
IOUtils.closeQuietly(viewComponentStream);
IOUtils.closeQuietly(fileOutput);
output = null;
System.gc();
}
public ViewComponentValue makeContentOffline(ViewComponentValue viewComponent) {
getClientService().makeContentOffline(viewComponent.getViewComponentId());
viewComponent=getClientService().getViewComponent(viewComponent.getViewComponentId());
return viewComponent;
}
public Integer getUnitForViewComponent(Integer viewComponentId) {
return getClientService().getUnitForViewComponent(viewComponentId);
}
public Set getDocumentUsage(Integer documentId) {
return getClientService().getDocumentUsage(documentId);
}
public byte[] getDocumentBytes(Integer documentId) {
return getClientService().getDocumentBytes(documentId);
}
public Set getPictureUsage(Integer pictureId) {
return getClientService().getPictureUsage(pictureId);
}
public void deleteSimplePwRealm(Integer simplePwRealmId) {
try {
getClientService().deleteSimplePwRealm(simplePwRealmId);
} catch (Exception e) {
if (log.isDebugEnabled()) log.error("Error at delete simplePwRealm");
}
}
public String getUniqueUrlLinkName(Integer viewComponentId, Integer parentId, String urlLinkName) {
return getClientService().checkForUniqueUrlLinkName(viewComponentId, parentId, urlLinkName);
}
public List<EditionValue> getEditions() {
return getClientService().getEditions();
}
public UnitValue getRootUnit4Site(Integer siteId) {
return getClientService().getRootUnit4Site(siteId);
}
/**
* Get the status of live deployment from the configuration xml for the site
* @return
*/
public boolean isLiveDeploymentActive() {
boolean flag = true;
// SiteValue site = getCurrentSite();
// String config = site.getConfigXML();
// try {
// Document doc = XercesHelper.string2Dom(config);
// Iterator<Element> iterator = XercesHelper.findNodes(doc, "//liveDeploymentActive");
// while (iterator.hasNext()) {
// Element element = iterator.next();
// String liveDeployment = element.getTextContent();
// if (liveDeployment.equalsIgnoreCase("0")) {
// return false;
// }
// }
//
// } catch (Exception e) {
// if (log.isDebugEnabled()) {
// log.debug("Error at converting string to xml for site cofiguration ", e);
// }
// }
return flag;
}
public void setViewComponentOnline(Integer viewComponentId) {
getClientService().setViewComponentOnline(viewComponentId);
}
public AccessRoleValue[] getAllAccessRoles() {
return getClientService().getAllAccessRoles();
}
public List<ViewComponentValue> getViewComponentsForSearch(String searchValue) {
return getClientService().getViewComponentsForSearch(this.getSelectedUnitId(), this.getViewDocumentId(), searchValue);
}
public DocumentSlimValue getDocumentSlimValue(Integer documentId){
return getClientService().getDocumentSlimValue(documentId);
}
public DocumentSlimValue updateDocumentSlimValue(DocumentSlimValue documentSlimValue){
return getClientService().updateDocument(documentSlimValue);
}
public SiteValue getSite(Integer siteId){
return getClientService().getCurrentSite(siteId);
}
}