Java tutorial
package com.arcusys.liferay.vaadinplugin.util; /* * #%L * Liferay Vaadin Plugin * %% * Copyright (C) 2010 - 2013 Vaadin Ltd. * Copyright (C) 2013 Arcusys Ltd. * %% * 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. * #L% */ import com.arcusys.liferay.vaadinplugin.vaadinVersion.VaadinVersion; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class WidgetsetCompilationHandler implements Runnable { private static final Log log = LogFactoryUtil.getLog(WidgetsetCompilationHandler.class); private WidgetsetCompiler compiler; private final String widgetset; private final List<VaadinAddonInfo> includeAddons; private final List<File> additionalDependencies; private ILog outputLog; public WidgetsetCompilationHandler(String widgetset, List<VaadinAddonInfo> includeAddons, List<File> additionalDependencies, ILog outputLog) { this.widgetset = widgetset; this.includeAddons = includeAddons; this.additionalDependencies = additionalDependencies; this.outputLog = outputLog; } public void run() { File tmpDir = null; try { tmpDir = WidgetsetUtil.createTempDir(); WidgetsetUtil.createWidgetset(tmpDir, widgetset, getIncludeWidgetsets()); compiler = new WidgetsetCompiler(outputLog, widgetset, tmpDir.getAbsolutePath(), getClasspathEntries(tmpDir)); try { compiler.compileWidgetset(); } catch (InterruptedException e1) { Thread.currentThread().interrupt(); } File compiledWidgetset = new File(tmpDir, widgetset); if (compiledWidgetset.exists() && compiledWidgetset.isDirectory()) { String ws = ControlPanelPortletUtil.getWidgetsetDir() + widgetset; WidgetsetUtil.rotateWidgetsetBackups(ws); WidgetsetUtil.backupOldWidgetset(ws); File destDir = new File(ws); outputLog.log("Copying widgetset from " + compiledWidgetset + " to " + destDir); System.out.println("Copying widgetset from " + compiledWidgetset + " to " + destDir); FileUtils.copyDirectory(compiledWidgetset, destDir); outputLog.log("Copying done"); System.out.println("Copying done"); } } catch (IOException e) { log.warn("Could not compile widgetsets.", e); System.out.println("Could not compile widgetsets. " + e.getMessage()); } finally { try { System.out.println("Remove temp directory"); FileUtils.deleteDirectory(tmpDir); System.out.println("Removing done..."); } catch (IOException e) { log.warn("Could not delete temporary directory: " + tmpDir, e); System.out.println("Could not delete temporary directory: " + tmpDir + " " + e); } compilationFinished(); } } private List<File> getClasspathEntries(File entry) { Version version = ControlPanelPortletUtil.getPortalVaadinVersion(); List<File> classpathEntries = new ArrayList<File>(); classpathEntries.add(entry); VaadinVersion currentVaadinVersion = VaadinVersion.getVaadinVersion(version); for (File file : currentVaadinVersion.getVaadinFileInfoForCompilation()) { classpathEntries.add(file); } for (VaadinAddonInfo addon : includeAddons) { classpathEntries.add(addon.getJarFile()); } classpathEntries.addAll(additionalDependencies); return classpathEntries; } private Set<String> getIncludeWidgetsets() { Set<String> widgetsets = new HashSet<String>(); if (includeAddons != null) { for (VaadinAddonInfo addon : includeAddons) { widgetsets.addAll(addon.getWidgetsets()); } } widgetsets.add("com.vaadin.DefaultWidgetSet"); return widgetsets; } public void terminate() { compiler.terminate(); compilationFinished(); } public void compilationFinished() { } }