package org.apache.maven.report.projectinfo;
/*
* 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.
*/
import java.util.Locale;
import java.util.regex.Pattern;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.reporting.AbstractMavenReportRenderer;
import org.codehaus.plexus.i18n.I18N;
import org.codehaus.plexus.util.StringUtils;
/**
* @author Hervé Boutemy
*
*/
public abstract class AbstractProjectInfoRenderer
extends AbstractMavenReportRenderer
{
/**
* {@link I18N}.
*/
protected I18N i18n;
/**
* The {@link Locale}
*/
protected Locale locale;
/**
* @param sink {@link Sink}
* @param i18n {@link I18N}
* @param locale {@link Locale}
*/
public AbstractProjectInfoRenderer( Sink sink, I18N i18n, Locale locale )
{
super( sink );
this.i18n = i18n;
this.locale = locale;
}
@Override
public String getTitle()
{
return getI18nString( "title" );
}
/**
* @param key The key.
* @return The translated string.
*/
protected String getI18nString( String key )
{
return getI18nString( getI18Nsection(), key );
}
/**
* @param section The section.
* @param key The key to translate.
* @return the translated key.
*/
protected String getI18nString( String section, String key )
{
return i18n.getString( "project-info-reports", locale, "report." + section + '.' + key );
}
@Override
protected void text( String text )
{
if ( StringUtils.isEmpty( text ) ) // Take care of spaces
{
sink.text( "-" );
}
else
{
// custombundle text with xml?
String regex = "(.+?)<(\"[^\"]*\"|'[^']*'|[^'\">])*>(.+?)";
if ( Pattern.matches( regex, text ) )
{
sink.rawText( text );
}
else
{
sink.text( text );
}
}
}
protected abstract String getI18Nsection();
}