Java tutorial
/** * Copyright (C) 2011-2012 trivago GmbH <mario.mueller@trivago.com>, <christian.krause@trivago.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.trivago.mail.pigeon.web; import com.trivago.mail.pigeon.bean.RecipientGroup; import com.trivago.mail.pigeon.bean.Sender; import com.trivago.mail.pigeon.storage.ConnectionFactory; import com.trivago.mail.pigeon.web.components.groups.GroupList; import com.trivago.mail.pigeon.web.components.mail.NewsletterList; import com.trivago.mail.pigeon.web.components.menu.MenuBar; import com.trivago.mail.pigeon.web.components.recipients.RecipientList; import com.trivago.mail.pigeon.web.components.sender.SenderList; import com.trivago.mail.pigeon.web.components.templates.TemplateList; import com.trivago.mail.pigeon.web.components.wizard.setup.SetupWizardComponent; import com.vaadin.Application; import com.vaadin.terminal.gwt.server.ApplicationServlet; import com.vaadin.ui.Label; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; import javax.servlet.ServletContext; import java.util.NoSuchElementException; /** * The Application's "main" class */ @SuppressWarnings("serial") public class MainApp extends Application { private Window window; private MenuBar menu; @Override public void init() { //DOMConfigurator.configure(Thread.currentThread().getContextClassLoader().getResource("log4j.xml")); // BasicConfigurator.configure(); window = new Window("Mail Pigeon"); setMainWindow(window); int senderSize; try { senderSize = Sender.getAll().size(); } catch (NoSuchElementException e) { senderSize = 0; } int recipientGroupSize; try { recipientGroupSize = RecipientGroup.getAll().size(); } catch (NoSuchElementException e) { recipientGroupSize = 0; } if (senderSize == 0 && recipientGroupSize == 0) { startWizard(); } else { menu = new MenuBar(this); window.addComponent(menu); setDashBoard(); } } public void initMenu() { menu = new MenuBar(this); window.addComponent(menu); } public void clearWindow() { window.removeAllComponents(); initMenu(); } public void setDashBoard() { VerticalLayout dbLayout = new VerticalLayout(); dbLayout.addComponent(new Label("Can I haz Dashboard?")); window.addComponent(dbLayout); } public void setNewsletterList() { NewsletterList newsletterList = new NewsletterList(); VerticalLayout nlLayout = new VerticalLayout(); nlLayout.addComponent(newsletterList); nlLayout.setMargin(true); clearWindow(); window.addComponent(nlLayout); } public void setSenderList() { SenderList senderList = new SenderList(); VerticalLayout slLayout = new VerticalLayout(); slLayout.addComponent(senderList); slLayout.setMargin(true); clearWindow(); window.addComponent(slLayout); } public void setRecipientGroupList() { GroupList groupList = new GroupList(); VerticalLayout rgLayout = new VerticalLayout(); rgLayout.addComponent(groupList); rgLayout.setMargin(true); clearWindow(); window.addComponent(rgLayout); } public void setRecipientList() { RecipientList recipientList = new RecipientList(); VerticalLayout rLayout = new VerticalLayout(); rLayout.addComponent(recipientList); rLayout.setMargin(true); clearWindow(); window.addComponent(rLayout); } public void setTemplateList() { TemplateList templateList = new TemplateList(); VerticalLayout tlLayout = new VerticalLayout(); tlLayout.addComponent(templateList); tlLayout.setMargin(true); clearWindow(); window.addComponent(tlLayout); } public void startWizard() { SetupWizardComponent wb = new SetupWizardComponent(); window.addComponent(wb); } public MenuBar getMenu() { return menu; } public void setMenu(MenuBar menu) { this.menu = menu; } @Override public void close() { super.close(); // Registers a shutdown hook for the Neo4j and index service instances // so that it shuts down nicely when the VM exits (even if you // "Ctrl-C" the running example before it's completed) Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { Logger.getLogger(MainApp.class).info("Shutdown hook called"); ConnectionFactory.getDatabase().shutdown(); } }); } }