in src/main/java/com/aliyun/oss/internal/ResponseParsers.java [4119:4396]
private DoMetaQueryResult parseDoMetaQueryResult(InputStream inputStream) throws ResponseParseException {
DoMetaQueryResult doMetaQueryResult = new DoMetaQueryResult();
if (inputStream == null) {
return doMetaQueryResult;
}
try {
Element root = getXmlRootElement(inputStream);
if (root.getChildText("NextToken") != null) {
doMetaQueryResult.setNextToken(root.getChildText("NextToken"));
}
Element filesElem = root.getChild("Files");
if(filesElem != null){
ObjectFiles objectFiles = new ObjectFiles();
List<Element> fileElem = filesElem.getChildren();
List<ObjectFile> fileList = new ArrayList<ObjectFile>();
for(Element elem : fileElem){
ObjectFile objectFile = new ObjectFile();
if (elem.getChild("URI") != null) {
objectFile.setUri(elem.getChildText("URI"));
}
objectFile.setFilename(elem.getChildText("Filename"));
if(!StringUtils.isNullOrEmpty(elem.getChildText("Size"))){
objectFile.setSize(Long.parseLong(elem.getChildText("Size")));
}
objectFile.setFileModifiedTime(elem.getChildText("FileModifiedTime"));
objectFile.setFileCreateTime(elem.getChildText("FileCreateTime"));
objectFile.setFileAccessTime(elem.getChildText("FileAccessTime"));
objectFile.setOssObjectType(elem.getChildText("OSSObjectType"));
objectFile.setOssStorageClass(elem.getChildText("OSSStorageClass"));
objectFile.setObjectACL(elem.getChildText("ObjectACL"));
objectFile.setETag(elem.getChildText("ETag"));
objectFile.setOssCRC64(elem.getChildText("OSSCRC64"));
if(!StringUtils.isNullOrEmpty(elem.getChildText("OSSTaggingCount"))){
objectFile.setOssTaggingCount(Integer.parseInt(elem.getChildText("OSSTaggingCount")));
}
Element ossTaggingElem = elem.getChild("OSSTagging");
if(ossTaggingElem != null){
OSSTagging ossTagging = new OSSTagging();
List<Element> taggingElem = ossTaggingElem.getChildren();
List<Tagging> taggingList = new ArrayList<Tagging>();
for(Element ele : taggingElem){
Tagging tagging = new Tagging();
tagging.setKey(ele.getChildText("Key"));
tagging.setValue(ele.getChildText("Value"));
taggingList.add(tagging);
}
ossTagging.setTagging(taggingList);
objectFile.setOssTagging(ossTagging);
}
Element ossUserMetaElem = elem.getChild("OSSUserMeta");
if(ossUserMetaElem != null){
OSSUserMeta ossUserMeta = new OSSUserMeta();
List<Element> userMetaElem = ossUserMetaElem.getChildren();
List<UserMeta> userMetaList = new ArrayList<UserMeta>();
for(Element ele : userMetaElem){
UserMeta userMeta = new UserMeta();
userMeta.setKey(ele.getChildText("Key"));
userMeta.setValue(ele.getChildText("Value"));
userMetaList.add(userMeta);
}
ossUserMeta.setUserMeta(userMetaList);
objectFile.setOssUserMeta(ossUserMeta);
}
if (elem.getChild("MediaType") != null) {
objectFile.setMediaType(elem.getChildText("MediaType"));
}
if (elem.getChild("ContentType") != null) {
objectFile.setContentType(elem.getChildText("ContentType"));
}
objectFile.setServerSideEncryption(elem.getChildText("ServerSideEncryption"));
objectFile.setServerSideEncryptionCustomerAlgorithm(elem.getChildText("ServerSideEncryptionCustomerAlgorithm"));
objectFile.setProduceTime(elem.getChildText("ProduceTime"));
objectFile.setMediaType(elem.getChildText("MediaType"));
objectFile.setContentType(elem.getChildText("ContentType"));
objectFile.setLatLong(elem.getChildText("LatLong"));
objectFile.setTitle(elem.getChildText("Title"));
objectFile.setOssExpiration(elem.getChildText("OSSExpiration"));
objectFile.setAccessControlAllowOrigin(elem.getChildText("AccessControlAllowOrigin"));
objectFile.setAccessControlRequestMethod(elem.getChildText("AccessControlRequestMethod"));
objectFile.setServerSideDataEncryption(elem.getChildText("ServerSideDataEncryption"));
objectFile.setServerSideEncryptionKeyId(elem.getChildText("ServerSideEncryptionKeyId"));
objectFile.setCacheControl(elem.getChildText("CacheControl"));
objectFile.setContentDisposition(elem.getChildText("ContentDisposition"));
objectFile.setContentEncoding(elem.getChildText("ContentEncoding"));
objectFile.setContentLanguage(elem.getChildText("ContentLanguage"));
if (elem.getChild("ImageHeight") != null) {
objectFile.setImageHeight(Long.parseLong(elem.getChildText("ImageHeight")));
}
if (elem.getChild("ImageWidth") != null) {
objectFile.setImageWidth(Long.parseLong(elem.getChildText("ImageWidth")));
}
if (elem.getChild("VideoHeight") != null) {
objectFile.setVideoHeight(Long.parseLong(elem.getChildText("VideoHeight")));
}
if (elem.getChild("VideoWidth") != null) {
objectFile.setVideoWidth(Long.parseLong(elem.getChildText("VideoWidth")));
}
Element videoStreamElem = elem.getChild("VideoStreams");
if(videoStreamElem != null){
List<Element> videoElem = videoStreamElem.getChildren();
List<MetaQueryVideoStream> metaQueryVideoStreamList = new ArrayList<MetaQueryVideoStream>();
for(Element ele : videoElem){
MetaQueryVideoStream metaQueryVideoStream = new MetaQueryVideoStream();
metaQueryVideoStream.setCodecName(ele.getChildText("CodecName"));
metaQueryVideoStream.setLanguage(ele.getChildText("Language"));
if (ele.getChild("Bitrate") != null) {
metaQueryVideoStream.setBitrate(Long.parseLong(ele.getChildText("Bitrate")));
}
metaQueryVideoStream.setFrameRate(ele.getChildText("FrameRate"));
if (ele.getChild("StartTime") != null) {
metaQueryVideoStream.setStartTime(Double.parseDouble(ele.getChildText("StartTime")));
}
if (ele.getChild("Duration") != null) {
metaQueryVideoStream.setDuration(Double.parseDouble(ele.getChildText("Duration")));
}
if (ele.getChild("FrameCount") != null) {
metaQueryVideoStream.setFrameCount(Long.parseLong(ele.getChildText("FrameCount")));
}
if (ele.getChild("BitDepth") != null) {
metaQueryVideoStream.setBitDepth(Long.parseLong(ele.getChildText("BitDepth")));
}
metaQueryVideoStream.setPixelFormat(ele.getChildText("PixelFormat"));
metaQueryVideoStream.setColorSpace(ele.getChildText("ColorSpace"));
if (ele.getChild("Height") != null) {
metaQueryVideoStream.setHeight(Long.parseLong(ele.getChildText("Height")));
}
if (ele.getChild("Width") != null) {
metaQueryVideoStream.setWidth(Long.parseLong(ele.getChildText("Width")));
}
metaQueryVideoStreamList.add(metaQueryVideoStream);
}
objectFile.setMetaQueryVideoStreams(metaQueryVideoStreamList);
}
Element audioStreamElem = elem.getChild("AudioStreams");
if(audioStreamElem != null) {
List<Element> audioElem = audioStreamElem.getChildren();
List<MetaQueryAudioStream> metaQueryAudioStreamList = new ArrayList<MetaQueryAudioStream>();
for(Element ele : audioElem){
MetaQueryAudioStream metaQueryAudioStream = new MetaQueryAudioStream();
metaQueryAudioStream.setCodecName(ele.getChildText("CodecName"));
if (ele.getChild("Bitrate") != null) {
metaQueryAudioStream.setBitrate(Long.parseLong(ele.getChildText("Bitrate")));
}
if (ele.getChild("SampleRate") != null) {
metaQueryAudioStream.setSampleRate(Long.parseLong(ele.getChildText("SampleRate")));
}
if (ele.getChild("StartTime") != null) {
metaQueryAudioStream.setStartTime(Double.parseDouble(ele.getChildText("StartTime")));
}
if (ele.getChild("Duration") != null) {
metaQueryAudioStream.setDuration(Double.parseDouble(ele.getChildText("Duration")));
}
if (ele.getChild("Channels") != null) {
metaQueryAudioStream.setChannels(Long.parseLong(ele.getChildText("Channels")));
}
metaQueryAudioStream.setLanguage(ele.getChildText("Language"));
metaQueryAudioStreamList.add(metaQueryAudioStream);
}
objectFile.setMetaQueryAudioStreams(metaQueryAudioStreamList);
}
Element subtitleElem = elem.getChild("Subtitles");
if (subtitleElem != null) {
List<Element> subtitleElemList = subtitleElem.getChildren();
List<MetaQuerySubtitle> metaQuerySubtitleList = new ArrayList<MetaQuerySubtitle>();
for (Element ele : subtitleElemList) {
MetaQuerySubtitle metaQuerySubtitle = new MetaQuerySubtitle();
metaQuerySubtitle.setCodecName(ele.getChildText("CodecName"));
metaQuerySubtitle.setLanguage(ele.getChildText("Language"));
if (ele.getChild("StartTime") != null) {
metaQuerySubtitle.setStartTime(Double.parseDouble(ele.getChildText("StartTime")));
}
if (ele.getChild("Duration") != null) {
metaQuerySubtitle.setDuration(Double.parseDouble(ele.getChildText("Duration")));
}
metaQuerySubtitleList.add(metaQuerySubtitle);
}
objectFile.setMetaQuerySubtitles(metaQuerySubtitleList);
}
if (elem.getChild("Bitrate") != null) {
objectFile.setBitrate(Long.parseLong(elem.getChildText("Bitrate")));
}
objectFile.setArtist(elem.getChildText("Artist"));
objectFile.setAlbumArtist(elem.getChildText("AlbumArtist"));
objectFile.setComposer(elem.getChildText("Composer"));
objectFile.setPerformer(elem.getChildText("Performer"));
objectFile.setAlbum(elem.getChildText("Album"));
if (elem.getChild("Duration") != null) {
objectFile.setDuration(Double.parseDouble(elem.getChildText("Duration")));
}
Element addressElem = elem.getChild("Addresses");
if (addressElem != null) {
List<Element> addressElemList = addressElem.getChildren();
List<MetaQueryAddress> addressList = new ArrayList<MetaQueryAddress>();
for (Element ele : addressElemList) {
MetaQueryAddress address = new MetaQueryAddress();
address.setAddressLine(ele.getChildText("AddressLine"));
address.setCity(ele.getChildText("City"));
address.setCountry(ele.getChildText("Country"));
address.setDistrict(ele.getChildText("District"));
address.setLanguage(ele.getChildText("Language"));
address.setProvince(ele.getChildText("Province"));
address.setTownship(ele.getChildText("Township"));
addressList.add(address);
}
objectFile.setAddresses(addressList);
}
fileList.add(objectFile);
}
objectFiles.setFile(fileList);
doMetaQueryResult.setFiles(objectFiles);
}
Element elem = root.getChild("Aggregations");
if(elem != null){
List<Aggregation> aggregationList = new ArrayList<Aggregation>();
Aggregations aggregations = new Aggregations();
for(Element el : elem.getChildren()){
Aggregation aggregation = new Aggregation();
aggregation.setField(el.getChildText("Field"));
aggregation.setOperation(el.getChildText("Operation"));
if(!StringUtils.isNullOrEmpty(el.getChildText("Value"))){
aggregation.setValue(Double.parseDouble(el.getChildText("Value")));
}
Element elemGroup = el.getChild("Groups");
if(elemGroup != null){
List<AggregationGroup> groupList = new ArrayList<AggregationGroup>();
AggregationGroups aggregationGroups = new AggregationGroups();
for(Element e : elemGroup.getChildren()){
AggregationGroup aggregationGroup = new AggregationGroup();
aggregationGroup.setValue(e.getChildText("Value"));
if(!StringUtils.isNullOrEmpty(e.getChildText("Count"))){
aggregationGroup.setCount(Integer.parseInt(e.getChildText("Count")));
}
groupList.add(aggregationGroup);
}
aggregationGroups.setGroup(groupList);
aggregation.setGroups(aggregationGroups);
}
aggregationList.add(aggregation);
}
aggregations.setAggregation(aggregationList);
doMetaQueryResult.setAggregations(aggregations);
}
return doMetaQueryResult;
} catch (JDOMParseException e) {
throw new ResponseParseException(e.getPartialDocument() + ": " + e.getMessage(), e);
} catch (Exception e) {
throw new ResponseParseException(e.getMessage(), e);
}
}