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.action; import com.liferay.ide.core.util.CoreUtil; import com.liferay.ide.project.ui.dialog.CustomProjectSelectionDialog; import com.liferay.ide.sdk.core.ISDKConstants; import com.liferay.ide.sdk.core.SDK; import com.liferay.ide.sdk.core.SDKUtil; import com.liferay.ide.ui.util.UIUtil; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; 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.window.Window; import org.eclipse.sapphire.ui.Presentation; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.console.IConsole; /** * @author Terry Jia * @author Andy Wu */ @SuppressWarnings("restriction") public class BuildServiceActionHandler extends BaseActionHandler { private void deleteLegacyFiles(IProject project, IProgressMonitor monitor) throws CoreException { 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); } } 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()) { results.add(project); } } return results; } @Override protected Object run(Presentation context) { List<IProject> projects = getServiceBuilderProjects(); CustomProjectSelectionDialog dialog = new CustomProjectSelectionDialog(UIUtil.getActiveShell()); dialog.setProjects(projects); 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); SDK sdk = SDKUtil.getSDK(project); sdk.runCommand(project, project.getFile("build.xml"), ISDKConstants.TARGET_BUILD_SERVICE, null, monitor); project.refreshLocal(IResource.DEPTH_INFINITE, 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 e) { } return null; } }