Remove my old email address from files. Might as well save spammers the trouble.
[zxing.git] / core / src / com / google / zxing / client / result / optional / MobileTagRichWebResultParser.java
1 /*
2  * Copyright 2008 ZXing authors
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.google.zxing.client.result.optional;
18
19 import com.google.zxing.BarcodeFormat;
20 import com.google.zxing.Result;
21
22 /**
23  * <p>Represents a "rich web" result encoded according to section 5 of the
24  * MobileTag Reader International Specification.</p>
25  *
26  * @author Sean Owen
27  */
28 final class MobileTagRichWebResultParser extends AbstractMobileTagResultParser {
29
30   public static final String SERVICE_TYPE = "54";
31
32   private static final int DEFAULT_ACTION = ACTION_DO;
33
34   public static MobileTagRichWebParsedResult parse(Result result) {
35     if (MobileTagRichWebParsedResult.TAGSERVER_URI_PREFIX == null) {
36       return null;
37     }
38     if (!result.getBarcodeFormat().equals(BarcodeFormat.DATAMATRIX)) {
39       return null;
40     }
41     String rawText = result.getText();
42     if (!rawText.startsWith(SERVICE_TYPE)) {
43       return null;
44     }
45
46     int length = rawText.length();
47     if (!isDigits(rawText, length)) {
48       return null;
49     }
50     int action;
51     String id;
52     if (length == 15) {
53       action = DEFAULT_ACTION;
54       id = rawText.substring(0, 2) + action + rawText.substring(2);
55     } else if (length == 16) {
56       action = rawText.charAt(2) - '0';
57       id = rawText;
58     } else {
59       return null;
60     }
61
62     return new MobileTagRichWebParsedResult(id, action);
63   }
64
65 }