/* ******************************************************************** Appropriate copyright notice */ package org.bedework.tools.cmdutil; import org.bedework.calfacade.filter.SfpTokenizer; import org.bedework.calsvci.CalSvcFactoryDefault; import org.bedework.calsvci.CalSvcI; import org.bedework.calsvci.CalSvcIPars; import org.bedework.util.misc.Logged; import org.bedework.util.misc.Util; import java.util.ArrayList; import java.util.Collection; /** * User: mike * Date: 3/7/17 * Time: 11:10 */ public class ProcessState extends Logged { private String account; private boolean superUser; private CalSvcI svci; private SfpTokenizer tokenizer; private final Collection<String> errors = new ArrayList<>(); private final Collection<String> info = new ArrayList<>(); public void setAccount(final String val) { account = val; } public String getAccount() { return account; } public void setSuperUser(final boolean val) { superUser = val; } public boolean getSuperUser() { return superUser; } public void clear() { errors.clear(); info.clear(); } public CalSvcI getSvci() { if ((svci == null) && !initSvci()) { return null; } return svci; } public void setSvci(final CalSvcI val) { svci = val; } public SfpTokenizer getTokenizer() { return tokenizer; } public void setTokenizer(final SfpTokenizer val) { tokenizer = val; } public Collection<String> getErrors() { return errors; } public void addError(final String msg) { error(msg); errors.add(msg); } public Collection<String> getInfo() { return info; } public void addInfo(final String msg) { info(msg); info.add(msg); } public void closeSvci() { try { if (getSvci() != null) { getSvci().close(); } } catch (final Throwable t) { t.printStackTrace(); } finally { setSvci(null); } } public String toString() { String res = ""; if (!Util.isEmpty(errors)) { res = "Errors: \n"; final StringBuilder sb = new StringBuilder(); for (final String s : errors) { sb.append(s); sb.append('\n'); } res += sb.toString(); } if (!Util.isEmpty(info)) { res += "\n"; final StringBuilder sb = new StringBuilder(); for (final String s : info) { sb.append(s); sb.append('\n'); } res += sb.toString(); } return res; } private boolean initSvci() { if (getAccount() == null) { addError("No current user"); return false; } final CalSvcIPars pars = new CalSvcIPars("tools", getAccount(), getAccount(), null, // calsuite true, // publicAdmin getSuperUser(), // superUser, true, // service false,// publicSubmission true,// adminCanEditAllPublicCategories true,// adminCanEditAllPublicLocations true,// adminCanEditAllPublicSponsors false); // sessionless try { setSvci(new CalSvcFactoryDefault().getSvc(pars)); return true; } catch (final Throwable t) { error(t); addError(t.getLocalizedMessage()); return false; } } }