130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni/*
230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * Copyright (C) 2011 The Android Open Source Project
330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni *
430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * Licensed under the Apache License, Version 2.0 (the "License");
530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * you may not use this file except in compliance with the License.
630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * You may obtain a copy of the License at
730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni *
830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni *      http://www.apache.org/licenses/LICENSE-2.0
930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni *
1030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * Unless required by applicable law or agreed to in writing, software
1130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * distributed under the License is distributed on an "AS IS" BASIS,
1230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * See the License for the specific language governing permissions and
1430ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni * limitations under the License.
1530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni */
1630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
1730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
1830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceronipackage android.filterpacks.text;
1930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
2030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroniimport android.filterfw.core.Filter;
21692c3bf7a1c7e2d5b1066cf7a1b057e993742c87Marius Rennimport android.filterfw.core.FilterContext;
2230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroniimport android.filterfw.core.Frame;
2330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroniimport android.filterfw.core.FrameFormat;
2421d0ac7403b836e32e2bdbdc8dc98f42b2dfa4e5Marius Rennimport android.filterfw.core.GenerateFieldPort;
2530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroniimport android.filterfw.core.KeyValueMap;
2630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroniimport android.filterfw.core.MutableFrameFormat;
2721d0ac7403b836e32e2bdbdc8dc98f42b2dfa4e5Marius Rennimport android.filterfw.format.ObjectFormat;
2830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
29a3bfbe5389c6146abe318a7add3fa688d69bc01bEino-Ville Talvala/**
30a3bfbe5389c6146abe318a7add3fa688d69bc01bEino-Ville Talvala * @hide
31a3bfbe5389c6146abe318a7add3fa688d69bc01bEino-Ville Talvala */
3230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceronipublic class StringSource extends Filter {
3330ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
3421d0ac7403b836e32e2bdbdc8dc98f42b2dfa4e5Marius Renn    @GenerateFieldPort(name = "stringValue")
3530ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    private String mString;
3630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
3730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    private FrameFormat mOutputFormat;
3830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
3930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    public StringSource(String name) {
4030ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni        super(name);
4130ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    }
4230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
4333d107bf315c9cc01a02a7a4a2c10a01f62e8c85Wei Hua    @Override
4421d0ac7403b836e32e2bdbdc8dc98f42b2dfa4e5Marius Renn    public void setupPorts() {
45bf4aaebc555cfb1e49ee411e3477203749fe6a11Marius Renn        mOutputFormat = ObjectFormat.fromClass(String.class, FrameFormat.TARGET_SIMPLE);
4621d0ac7403b836e32e2bdbdc8dc98f42b2dfa4e5Marius Renn        addOutputPort("string", mOutputFormat);
4730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    }
4830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
4933d107bf315c9cc01a02a7a4a2c10a01f62e8c85Wei Hua    @Override
5021d0ac7403b836e32e2bdbdc8dc98f42b2dfa4e5Marius Renn    public void process(FilterContext env) {
51cfda0a38d6f394724e0cbd831ec9bc71d951fc74Marius Renn        Frame output = env.getFrameManager().newFrame(mOutputFormat);
5230ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni        output.setObjectValue(mString);
538dd704358d808382465666354fc891af59b21e18Eino-Ville Talvala        output.setTimestamp(Frame.TIMESTAMP_UNKNOWN);
5421d0ac7403b836e32e2bdbdc8dc98f42b2dfa4e5Marius Renn        pushOutput("string", output);
5521d0ac7403b836e32e2bdbdc8dc98f42b2dfa4e5Marius Renn        closeOutputPort("string");
5630ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni    }
5730ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
5830ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni
5930ab3fc173709a491c9e2e103f53fb7c0d1b96b7Rodrigo Carceroni}
60