All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ferris.journal.gui.controller.JournalsController Maven / Gradle / Ivy

package org.ferris.journal.gui.controller;

import static org.ferris.journal.gui.i18n.i18n.getString;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.ferris.awt.ContainerTools;
import org.ferris.journal.gui.data.JournalData;
import org.ferris.journal.gui.model.Model;
import org.ferris.journal.gui.view.dialog.KErrorDialog;
import org.ferris.journal.gui.view.frame.KJournalsFrame;
import org.ferris.journal.jws.journal.Journal;
import org.ferris.swing.JComponentTools;
import org.ferris.swing.ui.ThrowableDialog;

public class JournalsController 
{
	private Model model;
	private JournalsController setModel(Model model) {
		this.model = model; return this;
	}
	private Model getModel() {
		return this.model;
	}
	
	
	private JournalsController setData()
	{
		if (getModel().getAllJournals() == null) {
			new ThrowableDialog(new Exception("Journal data not already set."), true);
		}
		return this;
	}
	
	private KJournalsFrame view;
	private JournalsController setView() 
	{
		this.view = new KJournalsFrame(this, getModel());
		
		return this;
	}
	private KJournalsFrame getView() {
		return this.view;
	}
	
	
	public JournalsController(Model model) { 
		setModel(model)
		    .setData()
			.setView()
			.getView().setVisible(true);
	}
	
	
	public void closeFrame() {
		getView().setVisible(false);
		getView().dispose();	
	}
	
	
	public void addEditJournals() {
		new JournalsController(getModel());
	}
	
	
	
	
	public void insertJournal(final String journalName,final boolean isActive) 
	{
		new Thread() {
			public void run() 
			{	
				ContainerTools.setEnabled(
					  view.getJContentPane()
					, false
				);
				JComponentTools.setWaitCursor(
					view.getJContentPane()
				);
				
				model.performingOperation(getString("op.journal.newJournal"));		
				Journal j = new Journal();
				
				model.performingOperation(getString("op.journal.setAccount"));
				j.setAccount(model.getAccount());		
				
				model.performingOperation(getString("op.journal.setCreatedOn"));
				j.setCreatedOn(Calendar.getInstance());					
				
				model.performingOperation(getString("op.journal.setName"));
				j.setName(journalName);
				
				model.performingOperation(getString("op.journal.setIsActive"));
				j.setIsActive(isActive);
				
				model.performingOperation(getString("op.journal.insert"));
				j = JournalData.getInstance().insert(j);
				
				ContainerTools.setEnabled(
					  view.getJContentPane()
					, true
				);
				JComponentTools.setDefaultCursor(
					view.getJContentPane()
				);
				
				model.performingOperation(getString("op.journal.inserted"));
				model.insertJournal(j);
			}
		}.start();
	}
	
	
	public void updateJournal(final Long journalId, final String journalName,final boolean journalIsActive) 
	{
		new Thread() {
			public void run() 
			{	
				ContainerTools.setEnabled(
					  view.getJContentPane()
					, false
				);
				JComponentTools.setWaitCursor(
					view.getJContentPane()
				);					
				
				model.performingOperation(getString("op.journal.findingId"));	
				Journal existingData
					= JournalData.getInstance().find(model.getAccount(), journalId);
				
				
				if (existingData == null) 
				{
					model.performingOperation(getString("op.journal.id.missing"));
					List
						errors = new ArrayList();
					errors.add(getString("journal.id.missing"));
					new KErrorDialog(view, errors);
					return;
				}
				
				model.performingOperation(getString("op.journal.setName"));		
				existingData.setName(journalName);
				
				model.performingOperation(getString("op.journal.setIsActive"));
				existingData.setIsActive(journalIsActive);
				
				model.performingOperation(getString("op.journal.update"));
				existingData = JournalData.getInstance().update(existingData);
				
				ContainerTools.setEnabled(
					  view.getJContentPane()
					, true
				);
				JComponentTools.setDefaultCursor(
					view.getJContentPane()
				);
				
				model.performingOperation(getString("op.journal.updated"));
				model.updateJournal(existingData);
			}
		}.start();
	}	
	
	
	public void newJournal() 
	{
		new Thread() {
			public void run() 
			{	
				try {
					model.performingOperation(getString("op.journal.new"));
					model.newJournal();
				}
				finally {
				}					
			}
		}.start();
	}
	
	
	public void deleteJournal(final Journal j) 
	{
		new Thread() {
			public void run() 
			{	
				ContainerTools.setEnabled(
					  view.getJContentPane()
					, false
				);
				JComponentTools.setWaitCursor(
					view.getJContentPane()
				);					
				
				model.performingOperation(getString("op.journal.delete"));
				JournalData.getInstance().delete(model.getAccount(), j.getId());
				
				ContainerTools.setEnabled(
					  view.getJContentPane()
					, true
				);
				JComponentTools.setDefaultCursor(
					view.getJContentPane()
				);
				
				model.performingOperation(getString("op.journal.deleted"));
				model.deleteJournal(j);
			}
		}.start();
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy