1 /* 2 * Copyright 2011 castLabs, Berlin 3 * 4 * Licensed under the Apache License, Version 2.0 (the License); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an AS IS BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.googlecode.mp4parser.boxes.ultraviolet; 18 19 import com.coremedia.iso.IsoTypeReader; 20 import com.coremedia.iso.Utf8; 21 import com.googlecode.mp4parser.AbstractFullBox; 22 23 import java.nio.ByteBuffer; 24 25 /** 26 * 27 */ 28 public class BaseLocationBox extends AbstractFullBox { 29 String baseLocation = ""; 30 String purchaseLocation = ""; 31 BaseLocationBox()32 public BaseLocationBox() { 33 super("bloc"); 34 } 35 BaseLocationBox(String baseLocation, String purchaseLocation)36 public BaseLocationBox(String baseLocation, String purchaseLocation) { 37 super("bloc"); 38 this.baseLocation = baseLocation; 39 this.purchaseLocation = purchaseLocation; 40 } 41 getBaseLocation()42 public String getBaseLocation() { 43 return baseLocation; 44 } 45 setBaseLocation(String baseLocation)46 public void setBaseLocation(String baseLocation) { 47 this.baseLocation = baseLocation; 48 } 49 getPurchaseLocation()50 public String getPurchaseLocation() { 51 return purchaseLocation; 52 } 53 setPurchaseLocation(String purchaseLocation)54 public void setPurchaseLocation(String purchaseLocation) { 55 this.purchaseLocation = purchaseLocation; 56 } 57 58 @Override getContentSize()59 protected long getContentSize() { 60 return 1028; 61 } 62 63 @Override _parseDetails(ByteBuffer content)64 public void _parseDetails(ByteBuffer content) { 65 parseVersionAndFlags(content); 66 baseLocation = IsoTypeReader.readString(content); 67 content.get(new byte[256 - Utf8.utf8StringLengthInBytes(baseLocation) - 1]); 68 purchaseLocation = IsoTypeReader.readString(content); 69 content.get(new byte[256 - Utf8.utf8StringLengthInBytes(purchaseLocation) - 1]); 70 content.get(new byte[512]); 71 } 72 73 @Override getContent(ByteBuffer byteBuffer)74 protected void getContent(ByteBuffer byteBuffer) { 75 writeVersionAndFlags(byteBuffer); 76 byteBuffer.put(Utf8.convert(baseLocation)); 77 byteBuffer.put(new byte[256 - Utf8.utf8StringLengthInBytes(baseLocation)]); // string plus term zero 78 byteBuffer.put(Utf8.convert(purchaseLocation)); 79 byteBuffer.put(new byte[256 - Utf8.utf8StringLengthInBytes(purchaseLocation)]); // string plus term zero 80 byteBuffer.put(new byte[512]); 81 } 82 83 @Override equals(Object o)84 public boolean equals(Object o) { 85 if (this == o) return true; 86 if (o == null || getClass() != o.getClass()) return false; 87 88 BaseLocationBox that = (BaseLocationBox) o; 89 90 if (baseLocation != null ? !baseLocation.equals(that.baseLocation) : that.baseLocation != null) return false; 91 if (purchaseLocation != null ? !purchaseLocation.equals(that.purchaseLocation) : that.purchaseLocation != null) 92 return false; 93 94 return true; 95 } 96 97 @Override hashCode()98 public int hashCode() { 99 int result = baseLocation != null ? baseLocation.hashCode() : 0; 100 result = 31 * result + (purchaseLocation != null ? purchaseLocation.hashCode() : 0); 101 return result; 102 } 103 } 104