Java tutorial
/******************************************************************************* * Copyright 2017 Capital One Services, LLC and Bitwise, Inc. * 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 hydrograph.ui.expression.editor.pages; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; import hydrograph.ui.expression.editor.Constants; import hydrograph.ui.expression.editor.PathConstant; import hydrograph.ui.expression.editor.composites.CategoriesDialogSourceComposite; import hydrograph.ui.expression.editor.composites.CategoriesDialogTargetComposite; import hydrograph.ui.expression.editor.dialogs.AddCategoreisDialog; import hydrograph.ui.expression.editor.jar.util.BuildExpressionEditorDataSturcture; import hydrograph.ui.expression.editor.util.ExpressionEditorUtil; import hydrograph.ui.logging.factory.LogFactory; import org.apache.commons.lang.StringUtils; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IWorkbenchPropertyPage; import org.eclipse.ui.dialogs.PropertyPage; import org.slf4j.Logger; public class AddExternalJarPage extends PropertyPage implements IWorkbenchPropertyPage { private static final String DIALOG_TITLE = "Configuration"; private CategoriesDialogTargetComposite categoriesDialogTargetComposite; private CategoriesDialogSourceComposite categoriesDialogSourceComposite; private Logger LOGGER = LogFactory.INSTANCE.getLogger(AddExternalJarPage.class); private AddCategoreisDialog addCategoreisDialog; public AddExternalJarPage() { // TODO Auto-generated constructor stub } @Override protected Control createContents(Composite parent) { ResourcesPlugin.getWorkspace().getRoot() .getProject(ExpressionEditorUtil.INSTANCE.lastString(getTitle(), Constants.SPACE)); noDefaultAndApplyButton(); Composite container = parent; container.setLayout(new GridLayout(1, false)); this.getShell().setText(DIALOG_TITLE); Composite mainComposite = new Composite(container, SWT.BORDER); mainComposite.setLayout(new GridLayout(1, false)); mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); SashForm sashForm = new SashForm(mainComposite, SWT.NONE); sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); categoriesDialogSourceComposite = new CategoriesDialogSourceComposite(sashForm, this, SWT.NONE); categoriesDialogTargetComposite = new CategoriesDialogTargetComposite(sashForm, categoriesDialogSourceComposite, SWT.NONE); sashForm.setWeights(new int[] { 1, 1 }); return container; } public boolean createPropertyFileForSavingData() { IProject iProject = BuildExpressionEditorDataSturcture.INSTANCE.getCurrentProject(); IFolder iFolder = iProject.getFolder(PathConstant.PROJECT_RESOURCES_FOLDER); Properties properties = new Properties(); FileOutputStream file = null; boolean isFileCreated = false; try { if (!iFolder.exists()) { iFolder.create(true, true, new NullProgressMonitor()); } for (String items : categoriesDialogTargetComposite.getTargetList().getItems()) { String jarFileName = StringUtils.trim(StringUtils.substringAfter(items, Constants.DASH)); String packageName = StringUtils.trim(StringUtils.substringBefore(items, Constants.DASH)); properties.setProperty(packageName, jarFileName); } file = new FileOutputStream(iFolder.getLocation().toString() + File.separator + PathConstant.EXPRESSION_EDITOR_EXTERNAL_JARS_PROPERTIES_FILES); properties.store(file, ""); ResourcesPlugin.getWorkspace().getRoot().refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); isFileCreated = true; } catch (IOException | CoreException exception) { LOGGER.error("Exception occurred while saving jar file path at projects setting folder", exception); } finally { if (file != null) try { file.close(); } catch (IOException e) { LOGGER.warn("IOException occurred while closing output-stream of file", e); } } return isFileCreated; } @Override public boolean performOk() { createPropertyFileForSavingData(); return super.performOk(); } }