diff options
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.java | 466 |
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(); + } +} |