Java tutorial
/******************************************************************************* * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * *******************************************************************************/ package com.liferay.ide.project.ui.upgrade.animated; import com.liferay.ide.core.ILiferayProject; import com.liferay.ide.core.LiferayCore; import com.liferay.ide.core.util.CoreUtil; import com.liferay.ide.project.core.IProjectBuilder; import com.liferay.ide.project.ui.ProjectUI; import com.liferay.ide.project.ui.dialog.CustomProjectSelectionDialog; import com.liferay.ide.project.ui.upgrade.action.CompileAction; import com.liferay.ide.ui.util.SWTUtil; import com.liferay.ide.ui.util.UIUtil; import java.lang.reflect.InvocationTargetException; import java.net.URL; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.debug.internal.ui.views.console.ProcessConsole; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Link; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.console.IConsole; /** * @author Andy Wu * @author Simon Jiang * @author Joye Luo * @author Terry Jia */ @SuppressWarnings("restriction") public class BuildServicePage extends Page { public BuildServicePage(Composite parent, int style, LiferayUpgradeDataModel dataModel) { super(parent, style, dataModel, BUILDSERVICE_PAGE_ID, true); Button buildServiceButton = new Button(this, SWT.PUSH); buildServiceButton.setText("Build Services"); buildServiceButton.addSelectionListener(new SelectionAdapter() { private void deleteLegacyFiles(IProject project, IProgressMonitor monitor) { try { String relativePath = "/docroot/WEB-INF/src/META-INF"; IFile portletSpringXML = project.getFile(relativePath + "/portlet-spring.xml"); IFile shardDataSourceSpringXML = project .getFile(relativePath + "/shard-data-source-spring.xml"); if (portletSpringXML.exists()) { portletSpringXML.delete(true, monitor); } if (shardDataSourceSpringXML.exists()) { shardDataSourceSpringXML.delete(true, monitor); } // for 6.2 maven project IFolder metaInfFolder = project.getFolder("/src/main/resources/META-INF/"); if (metaInfFolder.exists()) { metaInfFolder.delete(true, monitor); } } catch (CoreException e) { ProjectUI.logError(e); } } private List<IProject> getServiceBuilderProjects() { List<IProject> results = new ArrayList<IProject>(); IProject[] projects = CoreUtil.getAllProjects(); for (IProject project : projects) { IFile serviceFile = project.getFile("/docroot/WEB-INF/service.xml"); if (!serviceFile.exists()) { serviceFile = project.getFile("src/main/webapp/WEB-INF/service.xml"); } if (serviceFile.exists()) { results.add(project); } } return results; } @Override public void widgetSelected(SelectionEvent e) { List<IProject> projects = getServiceBuilderProjects(); CustomProjectSelectionDialog dialog = new CustomProjectSelectionDialog(UIUtil.getActiveShell()); dialog.setProjects(projects); URL imageUrl = ProjectUI.getDefault().getBundle().getEntry("/icons/e16/service.png"); Image serviceXmlImage = ImageDescriptor.createFromURL(imageUrl).createImage(); dialog.setImage(serviceXmlImage); dialog.setTitle("Liferay Service Project"); dialog.setMessage("Select Liferay Service Project"); List<IProject> liferayServiceProjects = new ArrayList<>(); if (dialog.open() == Window.OK) { final Object[] selectedProjects = dialog.getResult(); if (selectedProjects != null) { for (Object project : selectedProjects) { if (project instanceof IJavaProject) { IJavaProject p = (IJavaProject) project; liferayServiceProjects.add(p.getProject()); } } } } try { PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { for (IProject project : liferayServiceProjects) { deleteLegacyFiles(project, monitor); final ILiferayProject liferayProject = LiferayCore.create(project); if (liferayProject != null) { IProjectBuilder builder = liferayProject.adapt(IProjectBuilder.class); builder.buildService(monitor); } IConsole console = CompileAction.getConsole("build-service"); if (console != null) { ProcessConsole pc = (ProcessConsole) console; if (pc.getDocument().get().contains("BUILD FAILED")) { return; } } } } catch (CoreException e) { } } }); } catch (Exception e1) { } } }); } public void createSpecialDescriptor(Composite parent, int style) { final String descriptor = "In this step, we will delete some legacy servicebuilder related files" + " and re-run build-service on servicebuilder projects.\n" + "Note: Please make sure the default installed jre is JDK 8 (Preferences-Java-Installed JREs)."; String url = ""; Link link = SWTUtil.createHyperLink(this, style, descriptor, 1, url); link.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1)); } @Override public String getPageTitle() { return "Build Services"; } }