Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.gastro.rcp/src/org/gastro/internal/rcp/Model.java')
-rw-r--r--plugins/org.gastro.rcp/src/org/gastro/internal/rcp/Model.java466
1 files changed, 233 insertions, 233 deletions
diff --git a/plugins/org.gastro.rcp/src/org/gastro/internal/rcp/Model.java b/plugins/org.gastro.rcp/src/org/gastro/internal/rcp/Model.java
index eaf1952396..77dd27c027 100644
--- a/plugins/org.gastro.rcp/src/org/gastro/internal/rcp/Model.java
+++ b/plugins/org.gastro.rcp/src/org/gastro/internal/rcp/Model.java
@@ -1,233 +1,233 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- *
- * Initial Publication:
- * Eclipse Magazin - http://www.eclipse-magazin.de
- */
-package org.gastro.internal.rcp;
-
-import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.net4j.CDONet4jSession;
-import org.eclipse.emf.cdo.net4j.CDONet4jSessionConfiguration;
-import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.util.CommitException;
-import org.eclipse.emf.cdo.view.CDOAdapterPolicy;
-import org.eclipse.emf.cdo.view.CDOView;
-
-import org.eclipse.net4j.Net4jUtil;
-import org.eclipse.net4j.connector.IConnector;
-import org.eclipse.net4j.util.WrappedException;
-import org.eclipse.net4j.util.container.IPluginContainer;
-import org.eclipse.net4j.util.lifecycle.Lifecycle;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.edit.EMFEditPlugin;
-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-
-import org.gastro.business.BusinessDay;
-import org.gastro.business.BusinessFactory;
-import org.gastro.inventory.InventoryFactory;
-import org.gastro.inventory.MenuCard;
-import org.gastro.inventory.Restaurant;
-import org.gastro.inventory.Station;
-import org.gastro.rcp.IConfiguration;
-import org.gastro.rcp.IModel;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * @author Eike Stepper
- */
-public class Model extends Lifecycle implements IModel
-{
- public static final Model INSTANCE = new Model();
-
- private AdapterFactory adapterFactory;
-
- private CDONet4jSession session;
-
- private CDOView view;
-
- private Restaurant restaurant;
-
- private BusinessDay businessDay;
-
- private Station station;
-
- private Model()
- {
- adapterFactory = new ComposedAdapterFactory(EMFEditPlugin.getComposedAdapterFactoryDescriptorRegistry());
- }
-
- public AdapterFactory getAdapterFactory()
- {
- return adapterFactory;
- }
-
- public synchronized Restaurant getRestaurant()
- {
- if (restaurant == null)
- {
- String name = IConfiguration.INSTANCE.getRestaurant();
- String path = name + "/inventory";
- if (!view.hasResource(path))
- {
- CDOTransaction transaction = session.openTransaction();
- Restaurant restaurant = InventoryFactory.eINSTANCE.createRestaurant();
- restaurant.setName(name);
-
- try
- {
- CDOResource resource = transaction.createResource(path);
- resource.getContents().add(restaurant);
- transaction.commit();
- }
- catch (CommitException ex)
- {
- throw WrappedException.wrap(ex);
- }
- finally
- {
- transaction.close();
- }
- }
-
- CDOResource resource = view.getResource(path);
- restaurant = (Restaurant)resource.getContents().get(0);
- }
-
- return restaurant;
- }
-
- public synchronized BusinessDay getBusinessDay()
- {
- if (businessDay == null)
- {
- Restaurant restaurant = getRestaurant();
- Date date = IConfiguration.INSTANCE.getBusinessDay();
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
- String path = restaurant.getName() + "/" + formatter.format(date);
- if (!view.hasResource(path))
- {
- CDOTransaction transaction = session.openTransaction();
- Restaurant txRestaurant = transaction.getObject(restaurant);
- EList<MenuCard> menuCards = txRestaurant.getMenuCards();
- if (menuCards.isEmpty())
- {
- MenuCard menuCard = InventoryFactory.eINSTANCE.createMenuCard();
- menuCard.setTitle("Untitled");
- menuCards.add(menuCard);
- }
-
- BusinessDay businessDay = BusinessFactory.eINSTANCE.createBusinessDay();
- businessDay.setDate(date);
- businessDay.setMenuCard(menuCards.get(0));
-
- try
- {
- CDOResource resource = transaction.createResource(path);
- resource.getContents().add(businessDay);
- transaction.commit();
- }
- catch (CommitException ex)
- {
- throw WrappedException.wrap(ex);
- }
- finally
- {
- transaction.close();
- }
- }
-
- CDOResource resource = view.getResource(path);
- businessDay = (BusinessDay)resource.getContents().get(0);
- }
-
- return businessDay;
- }
-
- public synchronized Station getStation()
- {
- if (station == null)
- {
- String id = IConfiguration.INSTANCE.getStation();
- for (Station station : getRestaurant().getStations())
- {
- if (station.getStationID().equalsIgnoreCase(id))
- {
- this.station = station;
- break;
- }
- }
- }
-
- return station;
- }
-
- public <T extends CDOObject> Object modify(T object, ITransactionalOperation<T> operation)
- {
- CDOTransaction transaction = session.openTransaction();
-
- try
- {
- T transactionalObject = transaction.getObject(object);
- Object result = operation.execute(transactionalObject);
- transaction.commit();
-
- if (result instanceof CDOObject)
- {
- return view.getObject((CDOObject)result);
- }
-
- return result;
- }
- catch (CommitException ex)
- {
- throw WrappedException.wrap(ex);
- }
- finally
- {
- transaction.close();
- }
- }
-
- @Override
- protected void doActivate() throws Exception
- {
- super.doActivate();
- String server = IConfiguration.INSTANCE.getServer();
- String repository = IConfiguration.INSTANCE.getRepository();
-
- IConnector connector = Net4jUtil.getConnector(IPluginContainer.INSTANCE, "tcp", server);
-
- CDONet4jSessionConfiguration config = CDONet4jUtil.createNet4jSessionConfiguration();
- config.setConnector(connector);
- config.setRepositoryName(repository);
-
- session = config.openNet4jSession();
- view = session.openView();
- view.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL);
- }
-
- @Override
- protected void doDeactivate() throws Exception
- {
- session.close();
- session = null;
- view = null;
- restaurant = null;
- station = null;
- super.doDeactivate();
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ *
+ * Initial Publication:
+ * Eclipse Magazin - http://www.eclipse-magazin.de
+ */
+package org.gastro.internal.rcp;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.net4j.CDONet4jSession;
+import org.eclipse.emf.cdo.net4j.CDONet4jSessionConfiguration;
+import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.util.CommitException;
+import org.eclipse.emf.cdo.view.CDOAdapterPolicy;
+import org.eclipse.emf.cdo.view.CDOView;
+
+import org.eclipse.net4j.Net4jUtil;
+import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.util.WrappedException;
+import org.eclipse.net4j.util.container.IPluginContainer;
+import org.eclipse.net4j.util.lifecycle.Lifecycle;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.edit.EMFEditPlugin;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+
+import org.gastro.business.BusinessDay;
+import org.gastro.business.BusinessFactory;
+import org.gastro.inventory.InventoryFactory;
+import org.gastro.inventory.MenuCard;
+import org.gastro.inventory.Restaurant;
+import org.gastro.inventory.Station;
+import org.gastro.rcp.IConfiguration;
+import org.gastro.rcp.IModel;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @author Eike Stepper
+ */
+public class Model extends Lifecycle implements IModel
+{
+ public static final Model INSTANCE = new Model();
+
+ private AdapterFactory adapterFactory;
+
+ private CDONet4jSession session;
+
+ private CDOView view;
+
+ private Restaurant restaurant;
+
+ private BusinessDay businessDay;
+
+ private Station station;
+
+ private Model()
+ {
+ adapterFactory = new ComposedAdapterFactory(EMFEditPlugin.getComposedAdapterFactoryDescriptorRegistry());
+ }
+
+ public AdapterFactory getAdapterFactory()
+ {
+ return adapterFactory;
+ }
+
+ public synchronized Restaurant getRestaurant()
+ {
+ if (restaurant == null)
+ {
+ String name = IConfiguration.INSTANCE.getRestaurant();
+ String path = name + "/inventory";
+ if (!view.hasResource(path))
+ {
+ CDOTransaction transaction = session.openTransaction();
+ Restaurant restaurant = InventoryFactory.eINSTANCE.createRestaurant();
+ restaurant.setName(name);
+
+ try
+ {
+ CDOResource resource = transaction.createResource(path);
+ resource.getContents().add(restaurant);
+ transaction.commit();
+ }
+ catch (CommitException ex)
+ {
+ throw WrappedException.wrap(ex);
+ }
+ finally
+ {
+ transaction.close();
+ }
+ }
+
+ CDOResource resource = view.getResource(path);
+ restaurant = (Restaurant)resource.getContents().get(0);
+ }
+
+ return restaurant;
+ }
+
+ public synchronized BusinessDay getBusinessDay()
+ {
+ if (businessDay == null)
+ {
+ Restaurant restaurant = getRestaurant();
+ Date date = IConfiguration.INSTANCE.getBusinessDay();
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+ String path = restaurant.getName() + "/" + formatter.format(date);
+ if (!view.hasResource(path))
+ {
+ CDOTransaction transaction = session.openTransaction();
+ Restaurant txRestaurant = transaction.getObject(restaurant);
+ EList<MenuCard> menuCards = txRestaurant.getMenuCards();
+ if (menuCards.isEmpty())
+ {
+ MenuCard menuCard = InventoryFactory.eINSTANCE.createMenuCard();
+ menuCard.setTitle("Untitled");
+ menuCards.add(menuCard);
+ }
+
+ BusinessDay businessDay = BusinessFactory.eINSTANCE.createBusinessDay();
+ businessDay.setDate(date);
+ businessDay.setMenuCard(menuCards.get(0));
+
+ try
+ {
+ CDOResource resource = transaction.createResource(path);
+ resource.getContents().add(businessDay);
+ transaction.commit();
+ }
+ catch (CommitException ex)
+ {
+ throw WrappedException.wrap(ex);
+ }
+ finally
+ {
+ transaction.close();
+ }
+ }
+
+ CDOResource resource = view.getResource(path);
+ businessDay = (BusinessDay)resource.getContents().get(0);
+ }
+
+ return businessDay;
+ }
+
+ public synchronized Station getStation()
+ {
+ if (station == null)
+ {
+ String id = IConfiguration.INSTANCE.getStation();
+ for (Station station : getRestaurant().getStations())
+ {
+ if (station.getStationID().equalsIgnoreCase(id))
+ {
+ this.station = station;
+ break;
+ }
+ }
+ }
+
+ return station;
+ }
+
+ public <T extends CDOObject> Object modify(T object, ITransactionalOperation<T> operation)
+ {
+ CDOTransaction transaction = session.openTransaction();
+
+ try
+ {
+ T transactionalObject = transaction.getObject(object);
+ Object result = operation.execute(transactionalObject);
+ transaction.commit();
+
+ if (result instanceof CDOObject)
+ {
+ return view.getObject((CDOObject)result);
+ }
+
+ return result;
+ }
+ catch (CommitException ex)
+ {
+ throw WrappedException.wrap(ex);
+ }
+ finally
+ {
+ transaction.close();
+ }
+ }
+
+ @Override
+ protected void doActivate() throws Exception
+ {
+ super.doActivate();
+ String server = IConfiguration.INSTANCE.getServer();
+ String repository = IConfiguration.INSTANCE.getRepository();
+
+ IConnector connector = Net4jUtil.getConnector(IPluginContainer.INSTANCE, "tcp", server);
+
+ CDONet4jSessionConfiguration config = CDONet4jUtil.createNet4jSessionConfiguration();
+ config.setConnector(connector);
+ config.setRepositoryName(repository);
+
+ session = config.openNet4jSession();
+ view = session.openView();
+ view.options().addChangeSubscriptionPolicy(CDOAdapterPolicy.ALL);
+ }
+
+ @Override
+ protected void doDeactivate() throws Exception
+ {
+ session.close();
+ session = null;
+ view = null;
+ restaurant = null;
+ station = null;
+ super.doDeactivate();
+ }
+}

Back to the top