TavernerPOS - Source Code
Clone:
git clone http://www.librarysmith.co.uk/tavernerPOS
package com.floreantpos.bo.actions;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileWriter;
import java.io.StringWriter;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import org.apache.commons.io.IOUtils;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.floreantpos.Messages;
import com.floreantpos.model.MenuItem;
import com.floreantpos.model.MenuItemModifierGroup;
import com.floreantpos.model.dao.GenericDAO;
import com.floreantpos.model.dao.MenuCategoryDAO;
import com.floreantpos.model.dao.MenuGroupDAO;
import com.floreantpos.model.dao.MenuItemDAO;
import com.floreantpos.model.dao.MenuItemModifierGroupDAO;
import com.floreantpos.model.dao.MenuModifierDAO;
import com.floreantpos.model.dao.MenuModifierGroupDAO;
import com.floreantpos.model.dao.TaxDAO;
import com.floreantpos.ui.dialog.POSMessageDialog;
import com.floreantpos.util.datamigrate.Elements;
public class DataExportAction extends AbstractAction {
public DataExportAction() {
super(Messages.getString("DataExportAction.0")); //$NON-NLS-1$
}
@Override
public void actionPerformed(ActionEvent e) {
Session session = null;
Transaction transaction = null;
FileWriter fileWriter = null;
GenericDAO dao = new GenericDAO();
try {
JFileChooser fileChooser = getFileChooser();
int option = fileChooser.showSaveDialog(com.floreantpos.util.POSUtil.getFocusedWindow());
if (option != JFileChooser.APPROVE_OPTION) {
return;
}
File file = fileChooser.getSelectedFile();
if (file.exists()) {
option = JOptionPane.showConfirmDialog(com.floreantpos.util.POSUtil.getFocusedWindow(), Messages.getString("DataExportAction.1") + file.getName() + "?", Messages.getString("DataExportAction.3"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
JOptionPane.YES_NO_OPTION);
if (option != JOptionPane.YES_OPTION) {
return;
}
}
// fixMenuItemModifierGroups();
JAXBContext jaxbContext = JAXBContext.newInstance(Elements.class);
Marshaller m = jaxbContext.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
StringWriter writer = new StringWriter();
session = dao.createNewSession();
transaction = session.beginTransaction();
Elements elements = new Elements();
// * 2. USERS
// * 3. TAX
// * 4. MENU_CATEGORY
// * 5. MENU_GROUP
// * 6. MENU_MODIFIER
// * 7. MENU_MODIFIER_GROUP
// * 8. MENU_ITEM
// * 9. MENU_ITEM_SHIFT
// * 10. RESTAURANT
// * 11. USER_TYPE
// * 12. USER_PERMISSION
// * 13. SHIFT
elements.setTaxes(TaxDAO.getInstance().findAll(session));
elements.setMenuCategories(MenuCategoryDAO.getInstance().findAll(session));
elements.setMenuGroups(MenuGroupDAO.getInstance().findAll(session));
elements.setMenuModifiers(MenuModifierDAO.getInstance().findAll(session));
elements.setMenuModifierGroups(MenuModifierGroupDAO.getInstance().findAll(session));
elements.setMenuItems(MenuItemDAO.getInstance().findAll(session));
elements.setMenuItemModifierGroups(MenuItemModifierGroupDAO.getInstance().findAll(session));
// elements.setUsers(UserDAO.getInstance().findAll(session));
//
// elements.setMenuItemShifts(MenuItemShiftDAO.getInstance().findAll(session));
// elements.setRestaurants(RestaurantDAO.getInstance().findAll(session));
// elements.setUserTypes(UserTypeDAO.getInstance().findAll(session));
// elements.setUserPermissions(UserPermissionDAO.getInstance().findAll(session));
// elements.setShifts(ShiftDAO.getInstance().findAll(session));
m.marshal(elements, writer);
transaction.commit();
fileWriter = new FileWriter(file);
fileWriter.write(writer.toString());
fileWriter.close();
POSMessageDialog.showMessage(com.floreantpos.util.POSUtil.getFocusedWindow(), Messages.getString("DataExportAction.4")); //$NON-NLS-1$
} catch (Exception e1) {
transaction.rollback();
e1.printStackTrace();
POSMessageDialog.showMessage(com.floreantpos.util.POSUtil.getFocusedWindow(), e1.getMessage());
} finally {
IOUtils.closeQuietly(fileWriter);
dao.closeSession(session);
}
}
public static JFileChooser getFileChooser() {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setMultiSelectionEnabled(false);
fileChooser.setSelectedFile(new File("floreantpos-menu-items.xml")); //$NON-NLS-1$
fileChooser.setFileFilter(new FileFilter() {
@Override
public String getDescription() {
return "XML File"; //$NON-NLS-1$
}
@Override
public boolean accept(File f) {
if (f.getName().endsWith(".xml")) { //$NON-NLS-1$
return true;
}
return false;
}
});
return fileChooser;
}
private void fixMenuItemModifierGroups() {
MenuItemModifierGroupDAO menuItemModifierGroupDAO = MenuItemModifierGroupDAO.getInstance();
Session session = menuItemModifierGroupDAO.createNewSession();
Transaction transaction = session.beginTransaction();
try {
List<MenuItem> menuItems = MenuItemDAO.getInstance().findAll(session);
for (MenuItem menuItem : menuItems) {
List<MenuItemModifierGroup> modiferGroups = menuItem.getMenuItemModiferGroups();
for (MenuItemModifierGroup menuItemModifierGroup : modiferGroups) {
//menuItemModifierGroup.setParentMenuItem(menuItem);
menuItemModifierGroupDAO.saveOrUpdate(menuItemModifierGroup, session);
}
}
transaction.commit();
} catch(Exception x) {
if(transaction != null) transaction.rollback();
} finally {
menuItemModifierGroupDAO.closeSession(session);
}
}
}
- Details
- Last Updated: Monday, 04 April 2016 02:04
- Hits: 36560885