blob: 3f31ea5dd56a1f058fefb5430ce43738febd86a2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.netbeans.modules.web.clientproject.ant;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import org.netbeans.api.annotations.common.NonNull;
import org.netbeans.api.annotations.common.NullAllowed;
import org.netbeans.modules.web.clientproject.env.CommonProjectHelper;
import org.netbeans.modules.web.clientproject.env.Licenses;
import org.netbeans.modules.web.clientproject.env.Values;
import org.netbeans.spi.project.support.ant.ui.CustomizerUtilities;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.EditableProperties;
// copied from web.common
final class LicensePanelSupportImpl
extends Licenses implements CustomizerUtilities.LicensePanelContentHandler {
private String licenseName;
private String licensePath;
private String licenseContent;
private Values evaluator;
private CommonProjectHelper antHelper;
public LicensePanelSupportImpl(Values evaluator, CommonProjectHelper antHelper,
String licensePath, String licenseName) {
this.evaluator = evaluator;
this.antHelper = antHelper;
this.licensePath = licensePath;
this.licenseName = licenseName;
this.licenseContent = null;
}
@Override
public String getProjectLicenseLocation() {
return licensePath;
}
@Override
public String getGlobalLicenseName() {
return licenseName;
}
@Override
public FileObject resolveProjectLocation(@NonNull String path) {
String evaluated = evaluator.evaluate(path);
if (evaluated != null) {
return antHelper.resolveFileObject(evaluated);
} else {
return null;
}
}
@Override
public void setProjectLicenseLocation(@NullAllowed String newLocation) {
licensePath = newLocation;
}
@Override
public void setGlobalLicenseName(@NullAllowed String newName) {
licenseName = newName;
}
@Override
public String getDefaultProjectLicenseLocation() {
return "./nbproject/licenseheader.txt";
}
@Override
public void setProjectLicenseContent(@NullAllowed String text) {
licenseContent = text;
}
@org.netbeans.api.annotations.common.SuppressWarnings(value = "DM_DEFAULT_ENCODING", justification = "No idea how to detect encoding properly, sorry")
@Override
public void saveLicenseFile() throws IOException {
if (licenseContent != null) {
assert licensePath != null; //path needs to exist once we have content?
String evaluated = evaluator.evaluate(licensePath);
assert evaluated != null;
File file = antHelper.resolveFile(evaluated);
FileObject fo;
if (!file.exists()) {
fo = FileUtil.createData(file);
} else {
fo = FileUtil.toFileObject(file);
}
OutputStream out = fo.getOutputStream();
try {
FileUtil.copy(new ByteArrayInputStream(licenseContent.getBytes()), out);
} finally {
out.close();
}
}
}
@Override
public void updateProperties(EditableProperties projectProperties) {
if (licensePath != null) {
projectProperties.setProperty(LICENSE_PATH, licensePath);
} else {
projectProperties.remove(LICENSE_PATH);
}
if (licenseName != null) {
projectProperties.setProperty(LICENSE_NAME, licenseName);
} else {
projectProperties.remove(LICENSE_NAME);
}
}
}