blob: 4ac1e0b50b0696f9c771c4e07412b69c05c7a22d [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.apache.royale.compiler.internal.targets;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.royale.compiler.config.RSLSettings;
import org.apache.royale.compiler.projects.ICompilerProject;
import org.apache.royale.compiler.targets.ITargetReport;
import org.apache.royale.compiler.targets.ITargetSettings;
import org.apache.royale.compiler.units.ICompilationUnit;
import org.apache.royale.swf.types.RGB;
import com.google.common.collect.ImmutableSet;
/**
* Implementation of the {@link ITargetReport} interface.
*/
public class TargetReport implements ITargetReport
{
TargetReport(ICompilerProject project,
ImmutableSet<ICompilationUnit> reachableCompilationUnits,
List<RSLSettings> requiredRSLs,
RGB bgColor,
ITargetSettings targetSettings,
ITargetAttributes targetAttributes,
LinkageChecker linkageChecker) throws InterruptedException
{
this.project = project;
this.bgColor = bgColor;
this.targetSettings = targetSettings;
this.linkageChecker = linkageChecker;
definitionNames = new HashSet<String>();
assetCompilationUnits = new HashSet<String>();
sourceCompilationUnits = new HashSet<String>();
libraryCompilationUnits = new HashSet<String>();
this.requiredRSLs = requiredRSLs;
initReportFromReachableCompilationUnits(reachableCompilationUnits);
Float attrWidth = targetAttributes.getWidth();
if (attrWidth != null)
width = attrWidth.intValue();
else
width = 0;
Float attrHeight = targetAttributes.getHeight();
if (attrHeight != null)
height = attrHeight.intValue();
else
height = 0;
Double attrWidthPercent = targetAttributes.getWidthPercentage();
if (attrWidthPercent != null)
widthPercent = attrWidthPercent.doubleValue();
else
widthPercent = 0.0;
Double attrHeightPercent = targetAttributes.getHeightPercentage();
if (attrHeightPercent != null)
heightPercent = attrHeightPercent.doubleValue();
else
heightPercent = 0.0;
pageTitle = targetAttributes.getPageTitle();
}
@SuppressWarnings("unused")
private final ICompilerProject project;
@SuppressWarnings("unused")
private final ITargetSettings targetSettings;
private final Set<String> definitionNames;
private final Set<String> assetCompilationUnits;
private final Set<String> sourceCompilationUnits;
private final Set<String> libraryCompilationUnits;
private final List<RSLSettings> requiredRSLs;
private final RGB bgColor;
private final int width;
private final int height;
private final double widthPercent;
private final double heightPercent;
private final String pageTitle;
private final LinkageChecker linkageChecker;
@Override
public Set<String> getAssetNames()
{
return assetCompilationUnits;
}
@Override
public Set<String> getSourceNames()
{
return sourceCompilationUnits;
}
@Override
public Set<String> getLibraryNames()
{
return libraryCompilationUnits;
}
@Override
public Set<String> getDefinitionNames()
{
return definitionNames;
}
@Override
public List<RSLSettings> getRequiredRSLs()
{
return requiredRSLs != null ? requiredRSLs : Collections.<RSLSettings>emptyList();
}
@Override
public RGB getBackgroundColor()
{
return bgColor;
}
@Override
public int getWidth()
{
return width;
}
@Override
public int getHeight()
{
return height;
}
@Override
public double getWidthPercent()
{
return widthPercent;
}
@Override
public double getHeightPercent()
{
return heightPercent;
}
@Override
public String getPageTitle()
{
return pageTitle;
}
private void initReportFromReachableCompilationUnits(ImmutableSet<ICompilationUnit> reachableCompilationUnits) throws InterruptedException
{
for (ICompilationUnit compilationUnit : reachableCompilationUnits)
{
if (!linkageChecker.isExternal(compilationUnit))
definitionNames.addAll(compilationUnit.getQualifiedNames());
switch (compilationUnit.getCompilationUnitType())
{
case FXG_UNIT:
case EMBED_UNIT:
assetCompilationUnits.add(compilationUnit.getAbsoluteFilename());
break;
case AS_UNIT:
case ABC_UNIT:
case CSS_UNIT:
case MXML_UNIT:
sourceCompilationUnits.add(compilationUnit.getAbsoluteFilename());
sourceCompilationUnits.addAll(compilationUnit.getSyntaxTreeRequest().get().getIncludedFiles());
break;
case SWC_UNIT:
libraryCompilationUnits.add(compilationUnit.getAbsoluteFilename());
break;
case RESOURCE_UNIT:
// ignore
break;
}
}
}
}