Package com.dubture.composer.core.model

Source Code of com.dubture.composer.core.model.EclipsePHPPackage

package com.dubture.composer.core.model;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;

import com.dubture.composer.core.log.Logger;
import com.dubture.getcomposer.core.ComposerPackage;
import com.dubture.getcomposer.core.objects.Autoload;

public class EclipsePHPPackage implements
        NamespaceResolverInterface, InstallableItem
{
    private final ComposerPackage phpPackage;

    private IPath path;
   
    public EclipsePHPPackage(ComposerPackage phpPackage) {
       
        Assert.isNotNull(phpPackage);
        this.phpPackage = phpPackage;
    }

    @Override
    public IPath resolve(IResource resource)
    {
        Autoload autoload = phpPackage.getAutoload();
       
        if (autoload == null || autoload.getPsr0() == null || autoload.getPsr0().getFirst() == null) {
            Logger.debug("Unable to resolve namespace without autoload information " + phpPackage.getName());
            return null;
        }
        
        String targetDir = phpPackage.getTargetDir();
        IPath ns = null;
        IPath path = resource.getFullPath();
        IPath composerPath = getPath();
       
       
        IPath psr0Path = composerPath.append(autoload.getPsr0().getFirst().getNamespace());
        int segments = psr0Path.segmentCount();
        
        if (path.matchingFirstSegments(psr0Path) == segments) {
            
            if (targetDir != null && targetDir.length() > 0) {
                Path target = new Path(targetDir);
                ns = target.append(path.removeFirstSegments(psr0Path.segmentCount()));   
            } else {
                ns = path.removeFirstSegments(psr0Path.segmentCount());
            }
            
        }

        return ns;       
    }

    @Override
    public String getName()
    {
        return phpPackage.getName();
    }

    @Override
    public String getDescription()
    {
        return phpPackage.getDescription();
    }

    @Override
    public String getUrl()
    {
        return phpPackage.getHomepage();
    }

    public void setFullPath(String fullPath)
    {
        path = new Path(fullPath);
    }

    public IPath getPath()
    {
        return path;
    }

    public ComposerPackage getPhpPackage()
    {
        return phpPackage;
    }

  @Override
  public IPath reverseResolve(IProject project, String namespace) {
    // TODO Auto-generated method stub
    return null;
  }
}
TOP

Related Classes of com.dubture.composer.core.model.EclipsePHPPackage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.