io.openshift.launchpad.ReadmeProcessor Maven / Gradle / Ivy
/*
* Copyright 2017 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package io.openshift.launchpad;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.net.URL;
import java.util.Map;
import java.util.Properties;
import javax.inject.Singleton;
import org.apache.commons.lang3.text.StrSubstitutor;
import io.openshift.booster.catalog.DeploymentType;
import io.openshift.booster.catalog.Mission;
import io.openshift.booster.catalog.Runtime;
/**
* Reads the contents from the appdev-documentation repository
*
* @author George Gastaldi
*/
@Singleton
public class ReadmeProcessor
{
private static final String README_TEMPLATE_PATH = "readme/%s-README.adoc";
private static final String README_PROPERTIES_PATH = "readme/%s-%s-%s.properties";
URL getTemplateURL(String missionId)
{
return getClass().getClassLoader().getResource(String.format(README_TEMPLATE_PATH, missionId));
}
URL getPropertiesURL(String deploymentType, String missionId, String runtimeId)
{
return getClass().getClassLoader().getResource(
String.format(README_PROPERTIES_PATH, deploymentType, missionId, runtimeId));
}
public String getReadmeTemplate(String prefix, Mission mission) throws IOException
{
if (prefix == null)
{
return getReadmeTemplate(mission);
}
URL url = getTemplateURL(prefix + "-" + mission.getId());
return url == null ? null : loadContents(url);
}
public String getReadmeTemplate(Mission mission) throws IOException
{
URL url = getTemplateURL(mission.getId());
return url == null ? null : loadContents(url);
}
@SuppressWarnings("all")
public Map getRuntimeProperties(DeploymentType deploymentType, Mission mission, Runtime runtime)
{
Properties props = new Properties();
try
{
URL url = getPropertiesURL(deploymentType.name().toLowerCase(), mission.getId(), runtime.getId());
if (url != null)
props.load(url.openStream());
}
catch (IOException io)
{
// Do nothing
}
Map map = (Map) props;
return map;
}
public String processTemplate(String template, Map values)
{
StrSubstitutor strSubstitutor = new StrSubstitutor(values);
strSubstitutor.setEnableSubstitutionInVariables(true);
return strSubstitutor.replace(template);
}
private String loadContents(URL url) throws IOException
{
try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())))
{
StringWriter writer = new StringWriter();
char[] buffer = new char[1024];
int c;
while ((c = reader.read(buffer)) != -1)
{
writer.write(buffer, 0, c);
}
return writer.toString();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy