/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.binary; import java.util.ArrayList; import java.util.List; import com.enonic.cms.core.Path; public final class AttachmentNativeLinkKeyInPathParser { public static AttachmentNativeLinkKey resolveFromUrlPath( final Path path ) { List<String> pathElements = getPathElementsAfterPathElementName( "_attachment", path ); pathElements = removeAnyEmptyPathElementAtEnd( pathElements ); return AttachmentNativeLinkKeyParser.parse( new Path( pathElements, true ) ); } private static List<String> getPathElementsAfterPathElementName( String pathElementName, Path path ) { List<String> pathElements = new ArrayList<String>(); List<String> allPathElements = path.getPathElements(); int count = path.numberOfElements(); for ( int i = 0; i < count; i++ ) { String pathElement = path.getPathElement( i ); if ( pathElement.equals( pathElementName ) ) { return allPathElements.subList( i + 1, allPathElements.size() ); } } return new ArrayList<String>(); } private static List<String> removeAnyEmptyPathElementAtEnd( List<String> pathElements ) { String lastPathElement = pathElements.get( pathElements.size() - 1 ); if ( lastPathElement.equals( "" ) ) { return pathElements.subList( 0, pathElements.size() - 1 ); } return pathElements; } }