Android Open Source - esr-scanner Ps Validation






From Project

Back to project page esr-scanner.

License

The source code is released under:

Apache License

If you think the Android project esr-scanner listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2012 Lukas Landis/*  ww  w  .  j ava 2s  . c  o  m*/
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package ch.luklanis.esscan.paymentslip;

public abstract class PsValidation {
    private static final int STEP_COUNT = 1;

    protected static final char SEPERATOR = '|';

    protected static final int[][] MODULO10 = {{0, 9, 4, 6, 8, 2, 7, 1, 3, 5}, {9, 4, 6, 8, 2, 7, 1, 3, 5, 0}, {4, 6, 8, 2, 7, 1, 3, 5, 0, 9}, {6, 8, 2, 7, 1, 3, 5, 0, 9, 4}, {8, 2, 7, 1, 3, 5, 0, 9, 4, 6}, {2, 7, 1, 3, 5, 0, 9, 4, 6, 8}, {7, 1, 3, 5, 0, 9, 4, 6, 8, 2}, {1, 3, 5, 0, 9, 4, 6, 8, 2, 7}, {3, 5, 0, 9, 4, 6, 8, 2, 7, 1}, {5, 0, 9, 4, 6, 8, 2, 7, 1, 3}};

    protected static final int[] CHECK_DIGIT = {0, 9, 8, 7, 6, 5, 4, 3, 2, 1};

    protected int currentStep;
    protected int indexOfCurrentControlChar;
    protected int indexOfControlCharBefore;

    protected String relatedText;
    protected boolean finished;

    protected String[] completeCode;

    public PsValidation() {
        gotoBeginning(true);
    }

    protected int getCheckDigit(int[] digits) {
        int lastValue = 0;

        for (int digit : digits) {
            lastValue = MODULO10[lastValue][digit];
        }

        return CHECK_DIGIT[lastValue];
    }

    public int getStepCount() {
        return STEP_COUNT;
    }

    public int getCurrentStep() {
        return currentStep + 1;
    }

    public boolean nextStep() {
        indexOfControlCharBefore = indexOfCurrentControlChar;
        indexOfCurrentControlChar = 0;

        if (currentStep < getStepCount() - 1) {
            currentStep++;
            relatedText = null;
            return true;
        }

        finished = true;
        return false;
    }

    public void gotoBeginning(boolean reset) {
        currentStep = 0;
        finished = false;
        relatedText = null;
        resetCompleteCode();
    }

    public boolean finished() {
        return finished;
    }

    public boolean hasNonDigts(String text, int length) throws Exception {
        for (int i = 0; i < length; i++) {
            int digit = text.charAt(i) - '0';

            if (digit < 0 || digit > 9) {
                return true;
            }
        }

        return false;
    }

    public int[] getDigitsFromText(String text, int length) throws Exception {
        int[] digits = new int[length];

        for (int i = 0; i < digits.length; i++) {
            digits[i] = text.charAt(i) - '0';

            if (digits[i] < 0 || digits[i] > 9) {
                throw new Exception(String.format("%s is not a digit", digits[i]));
            }
        }

        return digits;
    }

    public String getCompleteCode() {
        String result = "";

        for (String codePart : completeCode) {
            if (codePart != null) {
                result += codePart;
            }
        }

        return result;
    }

    protected void resetStartSearchIndexes() {
        indexOfCurrentControlChar = 0;
        indexOfControlCharBefore = 0;
    }

    protected String preformatText(String text) {
        return SEPERATOR + text.replaceAll("\\+\\s", "+")
                .replaceAll("[\\s\\r\\n]+", String.valueOf(SEPERATOR));
    }

    protected void resetCompleteCode() {
        resetStartSearchIndexes();

        if (completeCode == null) {
            return;
        }

        for (int i = 0; i < completeCode.length; i++) {
            completeCode[i] = null;
        }
    }

    public abstract boolean validate(String text);

    public abstract String getCurrentRelatedText();

    public abstract String getNextRelatedText(String text);

    public abstract String getSpokenType();

    protected abstract boolean additionalStepTest(String related);
}




Java Source Code List

ch.luklanis.android.common.PlatformSupportManager.java
ch.luklanis.android.common.executor.AsyncTaskExecInterface.java
ch.luklanis.android.common.executor.AsyncTaskExecManager.java
ch.luklanis.android.common.executor.DefaultAsyncTaskExecInterface.java
ch.luklanis.android.common.executor.HoneycombAsyncTaskExecInterface.java
ch.luklanis.esscan.BeepManager.java
ch.luklanis.esscan.CaptureActivityHandler.java
ch.luklanis.esscan.CaptureActivity.java
ch.luklanis.esscan.DecodeHandler.java
ch.luklanis.esscan.DecodeThread.java
ch.luklanis.esscan.EsrBaseActivity.java
ch.luklanis.esscan.FinishListener.java
ch.luklanis.esscan.HelpActivity.java
ch.luklanis.esscan.IBase.java
ch.luklanis.esscan.Intents.java
ch.luklanis.esscan.LuminanceSource.java
ch.luklanis.esscan.OcrCharacterHelper.java
ch.luklanis.esscan.OcrInitAsyncTask.java
ch.luklanis.esscan.OcrRecognizeAsyncTask.java
ch.luklanis.esscan.OcrResultFailure.java
ch.luklanis.esscan.OcrResultText.java
ch.luklanis.esscan.OcrResult.java
ch.luklanis.esscan.PlanarYUVLuminanceSource.java
ch.luklanis.esscan.PreferencesActivity.java
ch.luklanis.esscan.ViewfinderView.java
ch.luklanis.esscan.camera.AutoFocusManager.java
ch.luklanis.esscan.camera.CameraConfigurationManager.java
ch.luklanis.esscan.camera.CameraManager.java
ch.luklanis.esscan.camera.PreviewCallback.java
ch.luklanis.esscan.camera.exposure.DefaultExposureInterface.java
ch.luklanis.esscan.camera.exposure.ExposureInterface.java
ch.luklanis.esscan.camera.exposure.ExposureManager.java
ch.luklanis.esscan.camera.exposure.FroyoExposureInterface.java
ch.luklanis.esscan.camera.open.DefaultOpenCameraInterface.java
ch.luklanis.esscan.camera.open.GingerbreadOpenCameraInterface.java
ch.luklanis.esscan.camera.open.OpenCameraInterface.java
ch.luklanis.esscan.camera.open.OpenCameraManager.java
ch.luklanis.esscan.codesend.Crypto.java
ch.luklanis.esscan.codesend.ESRSenderHttp.java
ch.luklanis.esscan.codesend.IEsrSender.java
ch.luklanis.esscan.dialogs.BankProfileDialogFragment.java
ch.luklanis.esscan.dialogs.BankProfileListDialog.java
ch.luklanis.esscan.dialogs.CancelOkDialog.java
ch.luklanis.esscan.dialogs.OkDialog.java
ch.luklanis.esscan.dialogs.OptionalOkDialog.java
ch.luklanis.esscan.history.BankProfile.java
ch.luklanis.esscan.history.DBHelper.java
ch.luklanis.esscan.history.GetHistoryAsyncTask.java
ch.luklanis.esscan.history.HistoryActivity.java
ch.luklanis.esscan.history.HistoryExportUpdateAsyncTask.java
ch.luklanis.esscan.history.HistoryFragment.java
ch.luklanis.esscan.history.HistoryItemAdapter.java
ch.luklanis.esscan.history.HistoryItem.java
ch.luklanis.esscan.history.HistoryManager.java
ch.luklanis.esscan.history.PsDetailActivity.java
ch.luklanis.esscan.history.PsDetailFragment.java
ch.luklanis.esscan.ime.ScannerIME.java
ch.luklanis.esscan.paymentslip.DTAFileCreator.java
ch.luklanis.esscan.paymentslip.EsIbanResult.java
ch.luklanis.esscan.paymentslip.EsIbanValidation.java
ch.luklanis.esscan.paymentslip.EsrResult.java
ch.luklanis.esscan.paymentslip.EsrValidation.java
ch.luklanis.esscan.paymentslip.PsResult.java
ch.luklanis.esscan.paymentslip.PsValidation.java