/* AWE - Amanzi Wireless Explorer
* http://awe.amanzi.org
* (C) 2008-2009, AmanziTel AB
*
* This library is provided under the terms of the Eclipse Public License
* as described at http://www.eclipse.org/legal/epl-v10.html. Any use,
* reproduction or distribution of the library constitutes recipient's
* acceptance of this agreement.
*
* This library is distributed WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.amanzi.awe.nem.ui.wizard;
import java.util.Map.Entry;
import org.amanzi.awe.nem.export.ExportedDataContainer;
import org.amanzi.awe.nem.export.ExportedDataItems;
import org.amanzi.awe.nem.managers.network.NetworkElementManager;
import org.amanzi.awe.nem.ui.wizard.pages.export.EditExportSettingsPage;
import org.amanzi.awe.nem.ui.wizard.pages.export.EditSynonymsPage;
import org.amanzi.awe.nem.ui.wizard.pages.export.ExportedDataSetupPage;
import org.amanzi.awe.nem.ui.wizard.pages.export.INetworkExportPage;
import org.amanzi.awe.nem.ui.wizard.pages.export.SelectDestinationFolderPage;
import org.amanzi.neo.models.network.INetworkModel;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.Wizard;
/**
* TODO Purpose of
* <p>
* </p>
*
* @author Vladislav_Kondratenko
* @since 1.0.0
*/
public class NetworkExportWizard extends Wizard {
private INetworkModel networkModel;
private SelectDestinationFolderPage mainPage;
private ExportedDataSetupPage exportDataPage;
private EditExportSettingsPage generalExportSettingsPage;
public NetworkExportWizard(final INetworkModel model) {
this.networkModel = model;
}
@Override
public void addPage(final IWizardPage page) {
super.addPage(page);
}
@Override
public void addPages() {
this.mainPage = new SelectDestinationFolderPage();
mainPage.setUpNetwork(networkModel);
addPage(mainPage);
this.exportDataPage = new ExportedDataSetupPage();
addPage(exportDataPage);
for (ExportedDataItems item : ExportedDataItems.values()) {
EditSynonymsPage page = new EditSynonymsPage(item);
page.setUpNetwork(networkModel);
addPage(page);
}
generalExportSettingsPage = new EditExportSettingsPage();
addPage(generalExportSettingsPage);
}
@Override
public IWizardPage getNextPage(final IWizardPage page) {
if (page.equals(mainPage)) {
networkModel = mainPage.getNetworkModel();
} else if (exportDataPage.equals(page)) {
EditSynonymsPage nextPage = (EditSynonymsPage)getPage(exportDataPage.getSelectedPages().get(0).getName());
nextPage.setUpNetwork(networkModel);
return nextPage;
} else if (page instanceof EditSynonymsPage) {
EditSynonymsPage currentPage = (EditSynonymsPage)page;
int index = currentPage.getPageType().getIndex();
index++;
ExportedDataItems nextPage = exportDataPage.getSelectedPages().get(index);
if (nextPage == null) {
return generalExportSettingsPage;
} else {
return getPage(nextPage.getName());
}
}
INetworkExportPage networkPage = (INetworkExportPage)super.getNextPage(page);
if (networkPage != null) {
networkPage.setUpNetwork(networkModel);
}
return networkPage;
}
@Override
public IWizardPage getPreviousPage(final IWizardPage page) {
if (page.equals(mainPage)) {
return null;
} else if (exportDataPage.equals(page)) {
return mainPage;
} else if (page instanceof EditSynonymsPage) {
EditSynonymsPage currentPage = (EditSynonymsPage)page;
int index = currentPage.getPageType().getIndex();
index--;
ExportedDataItems prevPage = exportDataPage.getSelectedPages().get(index);
if (prevPage == null) {
return exportDataPage;
} else {
return getPage(prevPage.getName());
}
} else if (generalExportSettingsPage.equals(page)) {
ExportedDataItems prevPage = (ExportedDataItems)exportDataPage.getSelectedPages().values().toArray()[exportDataPage
.getSelectedPages().size()];
return getPage(prevPage.getName());
}
return null;
}
@Override
public boolean performFinish() {
final ExportedDataContainer container = prepareExportedContainer();
NetworkElementManager.getInstance().exportNetworkData(container);
return true;
}
/**
* @return
*/
private ExportedDataContainer prepareExportedContainer() {
ExportedDataContainer container = new ExportedDataContainer(mainPage.getNetworkModel(),
generalExportSettingsPage.getCharset(), generalExportSettingsPage.getSeparator(),
generalExportSettingsPage.getQuoteSeparator(), mainPage.getDestinationFolderPath());
for (Entry<Integer, ExportedDataItems> pages : exportDataPage.getSelectedPages().entrySet()) {
EditSynonymsPage page = (EditSynonymsPage)getPage(pages.getValue().getName());
container.addToSynonyms(page.getPageType(), page.getProperties());
}
return container;
}
}