/* * Copyright 2012 Sebastian Annies, Hamburg * * Licensed 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 com.coremedia.iso; import com.coremedia.iso.boxes.Box; import com.coremedia.iso.boxes.ContainerBox; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * A fine selection of useful methods. * * @author Andre John Mas * @author Sebastian Annies * @deprecated please use {@link com.googlecode.mp4parser.util.Path}. I will remove that class before 1.0. */ public class IsoFileConvenienceHelper { public static Box get(ContainerBox containerBox, String path) { String[] parts = path.split("/"); if (parts.length == 0) { return null; } List<String> partList = new ArrayList<String>(Arrays.asList(parts)); if ("".equals(partList.get(0))) { partList.remove(0); } if (partList.size() > 0) { return get((List<Box>) containerBox.getBoxes(), partList); } return null; } private static Box get(List<Box> boxes, List<String> path) { String typeInPath = path.remove(0); for (Box box : boxes) { if (box instanceof ContainerBox) { ContainerBox boxContainer = (ContainerBox) box; String type = boxContainer.getType(); if (typeInPath.equals(type)) { List<Box> children = boxContainer.getBoxes(); if (path.size() > 0) { if (children.size() > 0) { return get(children, path); } } else { return box; } } } else { String type = box.getType(); if (path.size() == 0 && typeInPath.equals(type)) { return box; } } } return null; } }