class AddProperty extends TransformationOperation<AddProperty> {

    @Override
    @edu.umd.cs.findbugs.annotations.SuppressFBWarnings (value="NP_ALWAYS_NULL_EXCEPTION")
    protected TOExecutionResult execution(File transformedAppFolder, TransformationContext transformationContext) {
        FileInputStream fileInputStream = null;
        TOExecutionResult result = null;
        File fileToBeChanged = getAbsoluteFile(transformedAppFolder, transformationContext);
        try {
            Properties properties = new Properties();
            fileInputStream = new FileInputStream(fileToBeChanged);
            properties.load(fileInputStream);
            fileInputStream.close();

            //Add Property
            if(!properties.containsKey(propertyName)) {
                result = addProperty(transformedAppFolder, transformationContext);
            } else {
                //Set Property
                result = setProperty(transformedAppFolder, transformationContext);
            }
        } catch (IOException e) {
            result = TOExecutionResult.error(this, new TransformationOperationException("Property file could not be modified", e));
        } finally {
            if (fileInputStream != null) try {
                fileInputStream.close();
            } catch (IOException e) {
                result.addWarning(e);
            }
        }
        return result;
    }

    public  AddProperty();
    public  AddProperty(String propertyName, String propertyValue);

}