Artifact.java

package org.docascode.ant.types;

import org.apache.commons.io.FilenameUtils;
import org.apache.tools.ant.types.DataType;
import org.docascode.api.core.Substitute;
import org.docascode.api.core.errors.DocAsCodeException;
import org.docascode.api.core.office.Properties;
import org.eclipse.aether.artifact.DefaultArtifact;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Artifact extends DataType {
    private String groupId;
    public void setGroupId(String groupId){
        this.groupId = groupId;
    }

    private String artifactId;
    public void setArtifactId(String artifactId){
        this.artifactId = artifactId;
    }

    private String version;
    public void setVersion(String version){
        this.version = version;
    }

    private String extension;
    public void setExtension(String extension){
        this.extension = extension;
    }

    private File file;
    public void setFile (File file){
        this.file = file;
    }

    private List<AttachedArtifact> attached = new ArrayList<>();
    public void addConfiguredAttachedArtifact(AttachedArtifact attachedArtifact){
        this.attached.add(attachedArtifact);
    }

    public org.docascode.api.core.mvn.Artifacts toArtifacts() throws DocAsCodeException {
        org.docascode.api.core.mvn.Artifacts result = new org.docascode.api.core.mvn.Artifacts();
        Map<String,String> dict = Properties.list(file);
        if (file != null){
            this.extension = FilenameUtils.getExtension(file.getAbsolutePath());
        }
        org.eclipse.aether.artifact.Artifact artifact =
                new DefaultArtifact(Substitute.substitute(groupId,dict),
                        Substitute.substitute(artifactId,dict),
                        Substitute.substitute("",dict),
                        extension,
                        Substitute.substitute(version,dict));
            artifact=artifact.setFile(this.file);
        result.add(artifact);
        for (AttachedArtifact attachedArtifact : attached){
            artifact =
                    new DefaultArtifact(Substitute.substitute(groupId,dict),
                            Substitute.substitute(artifactId,dict),
                            Substitute.substitute(attachedArtifact.getClassifier(),dict),
                            extension,
                            Substitute.substitute(version,dict));
            artifact=artifact.setFile(attachedArtifact.getFile());
            result.add(artifact);
        }
        return result;
    }
}