UniversalCrudAction.java

package sk.iway.iwcm.components.crud;

import net.sourceforge.stripes.action.ActionBeanContext;
import net.sourceforge.stripes.action.ForwardResolution;
import net.sourceforge.stripes.action.Resolution;
import sk.iway.iwcm.Identity;
import sk.iway.iwcm.Logger;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.database.ActiveRecordBase;
import sk.iway.iwcm.database.JpaDB;
import sk.iway.iwcm.system.stripes.WebJETActionBean;

public class UniversalCrudAction extends WebJETActionBean
{
	@Override
	public void setContext(ActionBeanContext context)
	{
		super.setContext(context);
		Identity user = getCurrentUser();
		if (user!=null && user.isAdmin())
		{
			@SuppressWarnings("rawtypes")
			JpaDB dbInstance = (JpaDB)getRequest().getAttribute("universal_component_dbInstance");
			@SuppressWarnings("unchecked")
			Class<ActiveRecordBase> beanClass = (Class<ActiveRecordBase>)getRequest().getAttribute("universal_component_beanClass");
			int id = Tools.getIntValue(getRequest().getParameter("id"), 0);
			if (id>0)
				this.setObject(dbInstance.getById(id));
			else
			{
				try
				{
					this.object = beanClass.getDeclaredConstructor().newInstance();
				}
				catch (Exception ex)
				{
					Logger.debug(getClass(), "Instatiation error.");
				}
			}
		}
	}

	private ActiveRecordBase object;

	public Resolution bSave()
	{
		Identity user = getCurrentUser();
		if (user!=null && user.isAdmin())
		{
			Logger.debug(getClass(), "Teraz ukladaju objekt.");
			this.object.save();
			getRequest().setAttribute("saveOk", "ok");
		}
		return new ForwardResolution(RESOLUTION_CONTINUE);
	}

	public Resolution bDelete()
	{
		Identity user = getCurrentUser();
		if (user!=null && user.isAdmin())
		{
			Logger.debug(getClass(), "Teraz vymazava objekt data.");
			this.object.delete();
		}
		return new ForwardResolution(RESOLUTION_CONTINUE);
	}



	public ActiveRecordBase getObject() {
		return object;
	}

	public void setObject(ActiveRecordBase object) {
		this.object = object;
	}

}