Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1011 → Rev 1010

/hostadmiral/trunk/src/ak/hostadmiral/core/model/SystemUserModifiedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/SystemUserCreatedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailboxCreatedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/SystemUserDeletedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailboxModifiedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasDeletedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailboxDeletedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/InetDomainCreatedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/InetDomainModifiedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/InetDomainDeletedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasCreatedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasModifiedListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasDestinationManager.java
8,9 → 8,6
 
public class MailAliasDestinationManager
{
// FIXME create, delete and modify listeners are not implemented, bacause
// all operations are done via MailAliasManager. Do we need them?
 
private static boolean registered = false;
protected static void register()
{
/hostadmiral/trunk/src/ak/hostadmiral/core/model/Mailbox.java
18,35 → 18,11
private Boolean virusCheck;
private Boolean spamCheck;
private SystemUser systemUser;
private Mailbox origin; // save original object state before any changes
 
protected Mailbox()
{
}
 
protected Mailbox(Mailbox origin)
{
super(origin);
this.login = origin.login;
this.password = origin.password;
this.domain = origin.domain;
this.owner = origin.owner;
this.virusCheck = origin.virusCheck;
this.spamCheck = origin.spamCheck;
this.systemUser = origin.systemUser;
}
 
protected Mailbox getOrigin()
{
return origin;
}
 
protected void backupMe()
{
if(origin == null)
origin = new Mailbox(this);
}
 
/**
*
* @hibernate.property
67,7 → 43,6
if(!editableBy(editor))
throw new ModelSecurityException();
 
backupMe();
this.login = login;
}
 
91,7 → 66,6
if(password == null)
throw new NullPointerException("Null password");
 
backupMe();
this.password = Digest.encode(password);
}
 
115,7 → 89,6
if(!editableBy(editor))
throw new ModelSecurityException();
 
backupMe();
this.domain = domain;
}
 
139,7 → 112,6
if(!editableBy(editor))
throw new ModelSecurityException();
 
backupMe();
this.owner = owner;
}
 
163,7 → 135,6
if(!editableBy(editor))
throw new ModelSecurityException();
 
backupMe();
this.virusCheck = virusCheck;
}
 
187,7 → 158,6
if(!editableBy(editor))
throw new ModelSecurityException();
 
backupMe();
this.spamCheck = spamCheck;
}
 
211,7 → 181,6
if(!editableBy(editor))
throw new ModelSecurityException();
 
backupMe();
this.systemUser = systemUser;
}
 
256,10 → 225,9
 
protected static Mailbox createLimitedCopy(Mailbox origin)
{
Mailbox m = new Mailbox();
m.setLogin(origin.getLogin());
m.setDomain(origin.getDomain());
m.setOwner(origin.getOwner());
return m;
Mailbox u = new Mailbox();
u.setLogin(origin.getLogin());
u.setDomain(origin.getDomain());
return u;
}
}
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAlias.java
15,32 → 15,11
private InetDomain domain;
private User owner;
private Collection destinations; // Collection(MailAliasDestintion)
private MailAlias origin; // save original object state before any changes
 
protected MailAlias()
{
}
 
protected MailAlias(MailAlias origin)
{
super(origin);
this.address = origin.address;
this.domain = origin.domain;
this.owner = origin.owner;
this.destinations = origin.destinations; // FIXME: or make a copy?
}
 
protected MailAlias getOrigin()
{
return origin;
}
 
protected void backupMe()
{
if(origin == null)
origin = new MailAlias(this);
}
 
/**
*
* @hibernate.property
187,13 → 166,4
return editor.isSuperuser()
|| InetDomainManager.getInstance().areInetDomainsAvailable(editor);
}
 
protected static MailAlias createLimitedCopy(MailAlias origin)
{
MailAlias m = new MailAlias();
m.setAddress(origin.getAddress());
m.setDomain(origin.getDomain());
m.setOwner(origin.getOwner());
return m;
}
}
/hostadmiral/trunk/src/ak/hostadmiral/core/model/UserManager.java
236,7 → 236,7
public void delete(User editor, User user)
throws ModelException
{
// check rights
// chech rights
if(!user.deleteableBy(editor))
throw new ModelSecurityException();
 
/hostadmiral/trunk/src/ak/hostadmiral/core/model/User.java
23,7 → 23,7
private Boolean superuser;
private Locale locale = Locale.getDefault();
private Collection loginHistory;
private User origin; // save original object state before any changes
private User origin; // save original object state before any changes
 
protected User()
{
/hostadmiral/trunk/src/ak/hostadmiral/core/model/SystemUserManager.java
41,10 → 41,7
register();
}
 
private Collection createdListeners = new ArrayList();
private Collection modifiedListeners = new ArrayList();
private Collection beforeDeleteListeners = new ArrayList();
private Collection deletedListeners = new ArrayList();
 
private SystemUserManager()
{
170,8 → 167,6
if(!systemUser.editableBy(editor))
throw new ModelSecurityException();
 
boolean isNew = systemUser.isNew();
 
//systemUser.setModUser(editor); // FIXME
 
try {
181,44 → 176,8
{
throw new ModelException(ex);
}
 
// inform listeners
if(isNew) {
for(Iterator i = createdListeners.iterator(); i.hasNext(); ) {
SystemUserCreatedListener listener = (SystemUserCreatedListener)i.next();
listener.systemUserCreated(editor, systemUser);
}
}
else {
SystemUser oldSystemUser = systemUser.getOrigin();
if(oldSystemUser == null) oldSystemUser = systemUser;
for(Iterator i = modifiedListeners.iterator(); i.hasNext(); ) {
SystemUserModifiedListener listener = (SystemUserModifiedListener)i.next();
listener.systemUserModified(editor, systemUser, oldSystemUser);
}
}
}
 
public void addCreatedListener(SystemUserCreatedListener listener)
{
createdListeners.add(listener);
}
 
public void removeCreatedListener(SystemUserCreatedListener listener)
{
createdListeners.remove(listener);
}
 
public void addModifiedListener(SystemUserModifiedListener listener)
{
modifiedListeners.add(listener);
}
 
public void removeModifiedListener(SystemUserModifiedListener listener)
{
modifiedListeners.remove(listener);
}
 
public void addBeforeDeleteListener(SystemUserBeforeDeleteListener listener)
{
beforeDeleteListeners.add(listener);
229,16 → 188,6
beforeDeleteListeners.remove(listener);
}
 
public void addDeletedListener(SystemUserDeletedListener listener)
{
deletedListeners.add(listener);
}
 
public void removeDeletedListener(SystemUserDeletedListener listener)
{
deletedListeners.remove(listener);
}
 
public Collection beforeDelete(User editor, SystemUser user, Collection known)
throws ModelException
{
257,14 → 206,9
public void delete(User editor, SystemUser systemUser)
throws ModelException
{
// check rights
if(!systemUser.deleteableBy(editor))
throw new ModelSecurityException();
 
// backup copy
SystemUser oldSystemUser = new SystemUser(systemUser);
 
// delete it
try {
HibernateUtil.currentSession().delete(systemUser);
}
272,12 → 216,6
{
throw new ModelException(ex);
}
 
// inform listeners
for(Iterator i = deletedListeners.iterator(); i.hasNext(); ) {
SystemUserDeletedListener listener = (SystemUserDeletedListener)i.next();
listener.systemUserDeleted(editor, oldSystemUser);
}
}
 
public Collection listSystemUsers(User editor)
/hostadmiral/trunk/src/ak/hostadmiral/core/model/InetDomainManager.java
41,10 → 41,7
register();
}
 
private Collection createdListeners = new ArrayList();
private Collection modifiedListeners = new ArrayList();
private Collection beforeDeleteListeners = new ArrayList();
private Collection deletedListeners = new ArrayList();
 
private InetDomainManager()
{
131,8 → 128,6
if(!domain.editableBy(editor))
throw new ModelSecurityException();
 
boolean isNew = domain.isNew();
 
//domain.setModUser(editor); // FIXME
 
try {
142,64 → 137,18
{
throw new ModelException(ex);
}
 
// inform listeners
if(isNew) {
for(Iterator i = createdListeners.iterator(); i.hasNext(); ) {
InetDomainCreatedListener listener = (InetDomainCreatedListener)i.next();
listener.inetDomainCreated(editor, domain);
}
}
else {
InetDomain oldDomain = domain.getOrigin();
if(oldDomain == null) oldDomain = domain;
for(Iterator i = modifiedListeners.iterator(); i.hasNext(); ) {
InetDomainModifiedListener listener = (InetDomainModifiedListener)i.next();
listener.inetDomainModified(editor, domain, oldDomain);
}
}
}
 
public void addCreatedListener(InetDomainCreatedListener listener)
public void addBeforeDeleteListener(SystemUserBeforeDeleteListener listener)
{
createdListeners.add(listener);
}
 
public void removeCreatedListener(InetDomainCreatedListener listener)
{
createdListeners.remove(listener);
}
 
public void addModifiedListener(InetDomainModifiedListener listener)
{
modifiedListeners.add(listener);
}
 
public void removeModifiedListener(InetDomainModifiedListener listener)
{
modifiedListeners.remove(listener);
}
 
public void addBeforeDeleteListener(InetDomainBeforeDeleteListener listener)
{
beforeDeleteListeners.add(listener);
}
 
public void removeBeforeDeleteListener(InetDomainBeforeDeleteListener listener)
public void removeBeforeDeleteListener(SystemUserBeforeDeleteListener listener)
{
beforeDeleteListeners.remove(listener);
}
 
public void addDeletedListener(InetDomainDeletedListener listener)
{
deletedListeners.add(listener);
}
 
public void removeDeletedListener(InetDomainDeletedListener listener)
{
deletedListeners.remove(listener);
}
 
public Collection beforeDelete(User editor, InetDomain domain, Collection known)
throws ModelException
{
218,14 → 167,9
public void delete(User editor, InetDomain domain)
throws ModelException
{
// check rights
if(!domain.deleteableBy(editor))
throw new ModelSecurityException();
 
// backup copy
InetDomain oldDomain = new InetDomain(domain);
 
// delete it
try {
 
HibernateUtil.currentSession().delete(domain);
234,12 → 178,6
{
throw new ModelException(ex);
}
 
// inform listeners
for(Iterator i = deletedListeners.iterator(); i.hasNext(); ) {
InetDomainDeletedListener listener = (InetDomainDeletedListener)i.next();
listener.inetDomainDeleted(editor, oldDomain);
}
}
 
public Collection listInetDomains(User editor)
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailboxManager.java
44,10 → 44,7
register();
}
 
private Collection createdListeners = new ArrayList();
private Collection modifiedListeners = new ArrayList();
private Collection beforeDeleteListeners = new ArrayList();
private Collection deletedListeners = new ArrayList();
 
private MailboxManager()
{
140,8 → 137,6
if(!mailbox.editableBy(editor))
throw new ModelSecurityException();
 
boolean isNew = mailbox.isNew();
 
//mailbox.setModUser(editor); // FIXME
 
try {
151,44 → 146,8
{
throw new ModelException(ex);
}
 
// inform listeners
if(isNew) {
for(Iterator i = createdListeners.iterator(); i.hasNext(); ) {
MailboxCreatedListener listener = (MailboxCreatedListener)i.next();
listener.mailboxCreated(editor, mailbox);
}
}
else {
Mailbox oldMailbox = mailbox.getOrigin();
if(oldMailbox == null) oldMailbox = mailbox;
for(Iterator i = modifiedListeners.iterator(); i.hasNext(); ) {
MailboxModifiedListener listener = (MailboxModifiedListener)i.next();
listener.mailboxModified(editor, mailbox, oldMailbox);
}
}
}
 
public void addCreatedListener(MailboxCreatedListener listener)
{
createdListeners.add(listener);
}
 
public void removeCreatedListener(MailboxCreatedListener listener)
{
createdListeners.remove(listener);
}
 
public void addModifiedListener(MailboxModifiedListener listener)
{
modifiedListeners.add(listener);
}
 
public void removeModifiedListener(MailboxModifiedListener listener)
{
modifiedListeners.remove(listener);
}
 
public void addBeforeDeleteListener(MailboxBeforeDeleteListener listener)
{
beforeDeleteListeners.add(listener);
199,16 → 158,6
beforeDeleteListeners.remove(listener);
}
 
public void addDeletedListener(MailboxDeletedListener listener)
{
deletedListeners.add(listener);
}
 
public void removeDeletedListener(MailboxDeletedListener listener)
{
deletedListeners.remove(listener);
}
 
public Collection beforeDelete(User editor, Mailbox mailbox, Collection known)
throws ModelException
{
227,14 → 176,9
public void delete(User editor, Mailbox mailbox)
throws ModelException
{
// check rights
if(!mailbox.deleteableBy(editor))
throw new ModelSecurityException();
 
// backup copy
Mailbox oldMailbox = new Mailbox(mailbox);
 
// delete it
try {
HibernateUtil.currentSession().delete(mailbox);
}
242,12 → 186,6
{
throw new ModelException(ex);
}
 
// inform listeners
for(Iterator i = deletedListeners.iterator(); i.hasNext(); ) {
MailboxDeletedListener listener = (MailboxDeletedListener)i.next();
listener.mailboxDeleted(editor, oldMailbox);
}
}
 
public Collection listMailboxes(User editor)
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasManager.java
8,19 → 8,8
import ak.hostadmiral.util.ModelSecurityException;
 
public class MailAliasManager
implements UserBeforeDeleteListener
{
private static MailAliasManager mailAliasManager = null;
private static boolean registered = false;
 
public static MailAliasManager getInstance()
{
if(mailAliasManager == null)
mailAliasManager = new MailAliasManager();
 
return mailAliasManager;
}
 
protected static void register()
{
synchronized(MailAliasManager.class) {
42,14 → 31,8
register();
}
 
private Collection createdListeners = new ArrayList();
private Collection modifiedListeners = new ArrayList();
private Collection beforeDeleteListeners = new ArrayList();
private Collection deletedListeners = new ArrayList();
 
private MailAliasManager()
{
UserManager.getInstance().addBeforeDeleteListener(this);
}
 
public MailAlias create(User editor)
138,8 → 121,6
if(!mailAlias.editableBy(editor))
throw new ModelSecurityException();
 
boolean isNew = mailAlias.isNew();
 
//mailAlias.setModUser(editor); // FIXME
 
try {
149,90 → 130,14
{
throw new ModelException(ex);
}
 
// inform listeners
if(isNew) {
for(Iterator i = createdListeners.iterator(); i.hasNext(); ) {
MailAliasCreatedListener listener = (MailAliasCreatedListener)i.next();
listener.mailAliasCreated(editor, mailAlias);
}
}
else {
MailAlias oldMailAlias = mailAlias.getOrigin();
if(oldMailAlias == null) oldMailAlias = mailAlias;
for(Iterator i = modifiedListeners.iterator(); i.hasNext(); ) {
MailAliasModifiedListener listener = (MailAliasModifiedListener)i.next();
listener.mailAliasModified(editor, mailAlias, oldMailAlias);
}
}
}
 
public void addCreatedListener(MailAliasCreatedListener listener)
{
createdListeners.add(listener);
}
 
public void removeCreatedListener(MailAliasCreatedListener listener)
{
createdListeners.remove(listener);
}
 
public void addModifiedListener(MailAliasModifiedListener listener)
{
modifiedListeners.add(listener);
}
 
public void removeModifiedListener(MailAliasModifiedListener listener)
{
modifiedListeners.remove(listener);
}
 
public void addBeforeDeleteListener(MailAliasBeforeDeleteListener listener)
{
beforeDeleteListeners.add(listener);
}
 
public void removeBeforeDeleteListener(MailAliasBeforeDeleteListener listener)
{
beforeDeleteListeners.remove(listener);
}
 
public void addDeletedListener(MailAliasDeletedListener listener)
{
deletedListeners.add(listener);
}
 
public void removeDeletedListener(MailAliasDeletedListener listener)
{
deletedListeners.remove(listener);
}
 
public Collection beforeDelete(User editor, MailAlias mailAlias, Collection known)
throws ModelException
{
Collection cascade = new ArrayList();
 
for(Iterator i = beforeDeleteListeners.iterator(); i.hasNext(); ) {
MailAliasBeforeDeleteListener listener = (MailAliasBeforeDeleteListener)i.next();
Collection subcascade = listener.mailAliasBeforeDelete(editor, mailAlias, known);
if(subcascade != null)
cascade.addAll(subcascade);
}
 
return cascade;
}
 
public void delete(User editor, MailAlias mailAlias)
throws ModelException
{
// check rights
if(!mailAlias.deleteableBy(editor))
throw new ModelSecurityException();
 
// backup copy
MailAlias oldMailAlias = new MailAlias(mailAlias);
 
// delete it
try {
HibernateUtil.currentSession().delete(mailAlias);
}
240,12 → 145,6
{
throw new ModelException(ex);
}
 
// inform listeners
for(Iterator i = deletedListeners.iterator(); i.hasNext(); ) {
MailAliasDeletedListener listener = (MailAliasDeletedListener)i.next();
listener.mailAliasDeleted(editor, oldMailAlias);
}
}
 
public Collection listMailAliases(User editor)
291,45 → 190,14
}
}
 
public Collection userBeforeDelete(User editor, User user, Collection known)
throws ModelException
{
Collection mailAliases;
private static MailAliasManager mailAliasManager = null;
 
try {
mailAliases = HibernateUtil.currentSession().find(
"from MailAlias where owner = ?",
user, Hibernate.entity(User.class) );
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
 
return iterateBeforeDelete(editor, mailAliases, known);
}
 
private Collection iterateBeforeDelete(User editor, Collection mailAliases, Collection known)
throws ModelException
public static MailAliasManager getInstance()
{
Collection cascade = new ArrayList();
for(Iterator i = mailAliases.iterator(); i.hasNext(); ) {
MailAlias mailAlias = (MailAlias)i.next();
if(mailAlias.viewableBy(editor)) {
if(mailAlias.deleteableBy(editor))
cascade.add(new CascadeDeleteElement(mailAlias, CascadeDeleteElement.DELETE,
this.beforeDelete(editor, mailAlias, known)));
else
cascade.add(new CascadeDeleteElement(mailAlias, CascadeDeleteElement.FORBIDDEN,
null));
}
else {
cascade.add(new CascadeDeleteElement(MailAlias.createLimitedCopy(mailAlias),
CascadeDeleteElement.FORBIDDEN, null));
}
}
if(mailAliasManager == null)
mailAliasManager = new MailAliasManager();
 
return cascade;
return mailAliasManager;
}
 
public static final Comparator ADDRESS_COMPARATOR = new AddressComparator();
/hostadmiral/trunk/src/ak/hostadmiral/core/model/SystemUser.java
11,34 → 11,14
extends GeneralModelObject
{
/** user id in the OS */
private Integer uid;
private String name;
private User owner;
private SystemUser origin; // save original object state before any changes
private Integer uid;
private String name;
private User owner;
 
protected SystemUser()
{
}
 
protected SystemUser(SystemUser origin)
{
super(origin);
this.uid = origin.uid;
this.name = origin.name;
this.owner = origin.owner;
}
 
protected SystemUser getOrigin()
{
return origin;
}
 
protected void backupMe()
{
if(origin == null)
origin = new SystemUser(this);
}
 
/**
*
* @hibernate.property
/hostadmiral/trunk/src/ak/hostadmiral/core/model/InetDomain.java
10,32 → 10,13
public class InetDomain
extends GeneralModelObject
{
private String name;
private User owner;
private InetDomain origin; // save original object state before any changes
private String name;
private User owner;
 
protected InetDomain()
{
}
 
protected InetDomain(InetDomain origin)
{
super(origin);
this.name = origin.name;
this.owner = origin.owner;
}
 
protected InetDomain getOrigin()
{
return origin;
}
 
protected void backupMe()
{
if(origin == null)
origin = new InetDomain(this);
}
 
/**
*
* @hibernate.property
56,7 → 37,6
if(!editableBy(editor))
throw new ModelSecurityException();
 
backupMe();
this.name = name;
}
 
80,7 → 60,6
if(!editableBy(editor))
throw new ModelSecurityException();
 
backupMe();
this.owner = owner;
}
 
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/dummy/DummyListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/dummy/UserModifiedDummyListener.java
0,0 → 1,16
package ak.hostadmiral.core.listener.dummy;
 
import ak.hostadmiral.util.ModelException;
import ak.hostadmiral.core.model.User;
import ak.hostadmiral.core.model.UserModifiedListener;
 
public class UserModifiedDummyListener
implements UserModifiedListener
{
public void userModified(User editor, User user, User oldUser)
throws ModelException
{
System.out.println("UserCreatedDummyListener.userModified: from " + oldUser
+ " to " + user + " by " + editor);
}
}
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/dummy/UserDeletedDummyListener.java
0,0 → 1,16
package ak.hostadmiral.core.listener.dummy;
 
import ak.hostadmiral.util.ModelException;
import ak.hostadmiral.core.model.User;
import ak.hostadmiral.core.model.UserDeletedListener;
 
public class UserDeletedDummyListener
implements UserDeletedListener
{
public void userDeleted(User editor, User user)
throws ModelException
{
System.out.println("UserCreatedDummyListener.userDeleted: "
+ user + " by " + editor);
}
}
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/dummy/UserCreatedDummyListener.java
0,0 → 1,16
package ak.hostadmiral.core.listener.dummy;
 
import ak.hostadmiral.util.ModelException;
import ak.hostadmiral.core.model.User;
import ak.hostadmiral.core.model.UserCreatedListener;
 
public class UserCreatedDummyListener
implements UserCreatedListener
{
public void userCreated(User editor, User user)
throws ModelException
{
System.out.println("UserCreatedDummyListener.userCreated: "
+ user + " by " + editor);
}
}
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/file/FileListener.java
File deleted
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/file/UserCreatedFileListener.java
0,0 → 1,22
package ak.hostadmiral.core.listener.file;
 
import ak.hostadmiral.util.ModelException;
import ak.hostadmiral.core.model.User;
import ak.hostadmiral.core.model.UserCreatedListener;
 
import org.apache.log4j.Logger;
 
public class UserCreatedFileListener
implements UserCreatedListener
{
private static final Logger logger = Logger.getLogger(UserCreatedFileListener.class);
 
public void userCreated(User editor, User user)
throws ModelException
{
InterfaceFile.send("user\tcreate\t" + InterfaceFile.escape(user.getLogin()) + "\t"
+ InterfaceFile.escape(/* FIXME user.getPassword() */ "") + "\t"
+ user.getEnabled() + "\t"
+ InterfaceFile.escape(user.getComment()));
}
}
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/file/InterfaceFile.java
0,0 → 1,68
package ak.hostadmiral.core.listener.file;
 
import java.io.Writer;
import java.io.BufferedWriter;
import java.io.FileWriter;
 
import ak.hostadmiral.util.ModelException;
import ak.hostadmiral.core.model.User;
import ak.hostadmiral.core.model.UserModifiedListener;
 
import org.apache.log4j.Logger;
 
public class InterfaceFile
{
private static final Logger logger = Logger.getLogger(InterfaceFile.class);
 
private static String fileName;
protected static Object lock = new Object();
 
public static final String PROTOCOL_NAME = "HostAdmiral_FileInterface";
public static final String PROTOCOL_VERSION = "0.1";
 
public static String getFileName()
{
return fileName;
}
 
public static void setFileName(String fileName_)
{
fileName = fileName_;
}
 
protected static String escape(String s)
{
// FIXME: any other problem characters? optimize it?
s = s.replaceAll("\0", "\\\\0");
s = s.replaceAll("\\\\", "\\\\\\\\");
s = s.replaceAll("\t", "\\\\t");
s = s.replaceAll("\n", "\\\\n");
return s;
}
 
protected static void send(String message)
throws ModelException
{
synchronized(lock) {
try {
Writer out = new BufferedWriter(new FileWriter(fileName));
if(PROTOCOL_NAME != null) {
out.write(PROTOCOL_NAME);
out.write(" ");
}
if(PROTOCOL_VERSION != null) {
out.write(PROTOCOL_VERSION);
out.write("\n");
}
out.write(message);
out.write("\n\n");
out.close();
}
catch(Exception ex) {
logger.error("Cannot save message to file", ex);
throw new ModelException("Cannot save message to file:" + ex.getMessage());
// FIMXE: or just throw "internal server error" message?
}
}
}
}
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/file/UserModifiedFileListener.java
0,0 → 1,23
package ak.hostadmiral.core.listener.file;
 
import ak.hostadmiral.util.ModelException;
import ak.hostadmiral.core.model.User;
import ak.hostadmiral.core.model.UserModifiedListener;
 
import org.apache.log4j.Logger;
 
public class UserModifiedFileListener
implements UserModifiedListener
{
private static final Logger logger = Logger.getLogger(UserModifiedFileListener.class);
 
public void userModified(User editor, User user, User oldUser)
throws ModelException
{
InterfaceFile.send("user\tmodify\t" + InterfaceFile.escape(oldUser.getLogin()) + "\t"
+ InterfaceFile.escape(user.getLogin()) + "\t"
+ InterfaceFile.escape(/* FIXME user.getPassword() */ "") + "\t"
+ user.getEnabled() + "\t"
+ InterfaceFile.escape(user.getComment()));
}
}
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/file/ConfigServlet.java
16,7 → 16,7
public void init()
throws ServletException
{
FileListener.setFileName(getInitParameter("fileName"));
InterfaceFile.setFileName(getInitParameter("fileName"));
}
 
public void service(ServletRequest req, ServletResponse res)
/hostadmiral/trunk/src/ak/hostadmiral/core/listener/file/UserDeletedFileListener.java
0,0 → 1,19
package ak.hostadmiral.core.listener.file;
 
import ak.hostadmiral.util.ModelException;
import ak.hostadmiral.core.model.User;
import ak.hostadmiral.core.model.UserDeletedListener;
 
import org.apache.log4j.Logger;
 
public class UserDeletedFileListener
implements UserDeletedListener
{
private static final Logger logger = Logger.getLogger(UserCreatedFileListener.class);
 
public void userDeleted(User editor, User user)
throws ModelException
{
InterfaceFile.send("user\tdelete\t" + InterfaceFile.escape(user.getLogin()));
}
}
/hostadmiral/trunk/build.xml
1,6 → 1,6
<project name="hostadmiral" default="deploy" basedir=".">
 
<!--property name="build.compiler" value="jikes" /-->
<property name="build.compiler" value="jikes" />
 
<property name="src" location="src" />
<property name="classes" location="classes" />
/hostadmiral/trunk/webapp/WEB-INF/web.xml
84,96 → 84,24
<init-param>
<param-name>UserCreatedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
ak.hostadmiral.core.listener.file.FileListener;
ak.hostadmiral.core.listener.dummy.UserCreatedDummyListener;
ak.hostadmiral.core.listener.file.UserCreatedFileListener;
</param-value>
</init-param>
<init-param>
<param-name>UserModifiedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
ak.hostadmiral.core.listener.file.FileListener;
ak.hostadmiral.core.listener.dummy.UserModifiedDummyListener;
ak.hostadmiral.core.listener.file.UserModifiedFileListener;
</param-value>
</init-param>
<init-param>
<param-name>UserDeletedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
ak.hostadmiral.core.listener.file.FileListener;
ak.hostadmiral.core.listener.dummy.UserDeletedDummyListener;
ak.hostadmiral.core.listener.file.UserDeletedFileListener;
</param-value>
</init-param>
<init-param>
<param-name>InetDomainCreatedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>InetDomainModifiedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>InetDomainDeletedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>SystemUserCreatedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>SystemUserModifiedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>SystemUserDeletedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>MailboxCreatedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>MailboxModifiedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>MailboxDeletedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>MailAliasCreatedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>MailAliasModifiedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<init-param>
<param-name>MailAliasDeletedListener</param-name>
<param-value>
ak.hostadmiral.core.listener.dummy.DummyListener;
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>