package org.apache.maven.index.treeview; /* * 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 org.apache.maven.index.ArtifactInfo; import org.apache.maven.index.treeview.TreeNode.Type; /** * A default implementation of TreeNodeFactory, that is fairly simple to extend. * * @author Tamas Cservenak */ public class DefaultTreeNodeFactory implements TreeNodeFactory { private final String repositoryId; public DefaultTreeNodeFactory( String id ) { this.repositoryId = id; } public String getRepositoryId() { return repositoryId; } public TreeNode createGNode( IndexTreeView tview, TreeViewRequest req, String path, String groupName ) { TreeNode result = createNode( tview, req, path, false, groupName, Type.G ); return decorateGNode( tview, req, path, groupName, result ); } protected TreeNode decorateGNode( IndexTreeView tview, TreeViewRequest req, String path, String groupName, TreeNode node ) { return node; } public TreeNode createANode( IndexTreeView tview, TreeViewRequest req, ArtifactInfo ai, String path ) { TreeNode result = createNode( tview, req, path, false, ai.getArtifactId(), Type.A ); result.setGroupId( ai.getGroupId() ); result.setArtifactId( ai.getArtifactId() ); return decorateANode( tview, req, ai, path, result ); } protected TreeNode decorateANode( IndexTreeView tview, TreeViewRequest req, ArtifactInfo ai, String path, TreeNode node ) { return node; } public TreeNode createVNode( IndexTreeView tview, TreeViewRequest req, ArtifactInfo ai, String path ) { TreeNode result = createNode( tview, req, path, false, ai.getVersion(), Type.V ); result.setGroupId( ai.getGroupId() ); result.setArtifactId( ai.getArtifactId() ); result.setVersion( ai.getVersion() ); return decorateVNode( tview, req, ai, path, result ); } protected TreeNode decorateVNode( IndexTreeView tview, TreeViewRequest req, ArtifactInfo ai, String path, TreeNode node ) { return node; } public TreeNode createArtifactNode( IndexTreeView tview, TreeViewRequest req, ArtifactInfo ai, String path ) { StringBuilder sb = new StringBuilder( ai.getArtifactId() ).append( "-" ).append( ai.getVersion() ); if ( ai.getClassifier() != null ) { sb.append( "-" ).append( ai.getClassifier() ); } sb.append( "." ).append( ai.getFileExtension() == null ? "jar" : ai.getFileExtension() ); TreeNode result = createNode( tview, req, path, true, sb.toString(), Type.artifact ); result.setGroupId( ai.getGroupId() ); result.setArtifactId( ai.getArtifactId() ); result.setVersion( ai.getVersion() ); return decorateArtifactNode( tview, req, ai, path, result ); } protected TreeNode decorateArtifactNode( IndexTreeView tview, TreeViewRequest req, ArtifactInfo ai, String path, TreeNode node ) { return node; } protected TreeNode createNode( IndexTreeView tview, TreeViewRequest req, String path, boolean leaf, String nodeName, Type type ) { TreeNode result = instantiateNode( tview, req, path, leaf, nodeName ); result.setPath( path ); result.setType( type ); result.setLeaf( leaf ); result.setNodeName( nodeName ); result.setRepositoryId( getRepositoryId() ); return result; } protected TreeNode instantiateNode( IndexTreeView tview, TreeViewRequest req, String path, boolean leaf, String nodeName ) { return new DefaultTreeNode( tview, req ); } }