001/**
002 * Copyright 2013 John Ericksen
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *    http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.androidtransfuse.analysis;
017
018import org.androidtransfuse.adapter.ASTType;
019import org.androidtransfuse.annotations.MetaData;
020import org.androidtransfuse.annotations.MetaDataSet;
021
022import java.util.ArrayList;
023import java.util.List;
024
025import static org.androidtransfuse.util.AnnotationUtil.checkBlank;
026
027/**
028 * @author John Ericksen
029 */
030public class MetaDataBuilder {
031
032    public List<org.androidtransfuse.model.manifest.MetaData> buildMetaData(ASTType astType) {
033
034        MetaDataSet metaDataSet = astType.getAnnotation(MetaDataSet.class);
035        MetaData metaData = astType.getAnnotation(MetaData.class);
036
037        List<org.androidtransfuse.model.manifest.MetaData> convertedIntentFilters = new ArrayList<org.androidtransfuse.model.manifest.MetaData>();
038
039        if (metaDataSet != null) {
040            for (MetaData metaDataItem : metaDataSet.value()) {
041                convertedIntentFilters.add(buildMetaData(metaDataItem));
042            }
043        }
044        if (metaData != null) {
045            convertedIntentFilters.add(buildMetaData(metaData));
046        }
047
048        return convertedIntentFilters;
049    }
050
051    private org.androidtransfuse.model.manifest.MetaData buildMetaData(MetaData metaDataInput) {
052        org.androidtransfuse.model.manifest.MetaData metaData = new org.androidtransfuse.model.manifest.MetaData();
053
054        metaData.setName(metaDataInput.name());
055        metaData.setResource(checkBlank(metaDataInput.resource()));
056        metaData.setValue(checkBlank(metaDataInput.value()));
057
058        return metaData;
059    }
060}