ScopedErrorReport.java revision 731b74f7f44e67312a1fc4161c4e0aae221b2417
169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn/*
269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn * Copyright (C) 2015 The Android Open Source Project
369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn *
469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn * Licensed under the Apache License, Version 2.0 (the "License");
569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn * you may not use this file except in compliance with the License.
669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn * You may obtain a copy of the License at
769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn *
869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn *      http://www.apache.org/licenses/LICENSE-2.0
969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn *
1069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn * Unless required by applicable law or agreed to in writing, software
1169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn * distributed under the License is distributed on an "AS IS" BASIS,
1269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn * See the License for the specific language governing permissions and
1469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn * limitations under the License.
15251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn */
16251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn
1769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahnpackage android.databinding.tool.processing;
1869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
1969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahnimport org.apache.commons.lang3.StringUtils;
2069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
2169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahnimport android.databinding.tool.store.Location;
2269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
2369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahnimport java.util.List;
2469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
2569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahnpublic class ScopedErrorReport {
2669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
27251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn    private final String mFilePath;
2869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
2969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn    private final List<Location> mLocations;
3069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
31251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn    /**
32251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn     * Only created by Scope
3369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn     */
3469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn    ScopedErrorReport(String filePath, List<Location> locations) {
3569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        mFilePath = filePath;
3669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        mLocations = locations;
3769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn    }
3869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
39251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn    public String getFilePath() {
4069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        return mFilePath;
4169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn    }
4269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
4369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn    public List<Location> getLocations() {
4469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        return mLocations;
45251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn    }
46251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn
47251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn    public boolean isValid() {
48251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn        return StringUtils.isNotBlank(mFilePath);
49251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn    }
5069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn
5169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn    public String toUserReadableString() {
5269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        StringBuilder sb = new StringBuilder();
5369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        if (mFilePath != null) {
5469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn            sb.append("File:");
5569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn            sb.append(mFilePath);
5669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        }
5769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        if (mLocations != null && mLocations.size() > 0) {
5869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn            if (mLocations.size() > 1) {
59c8eca23793dcaf933c4dace4127de710698b7a4cDarren Krahn                sb.append("Locations:");
60c8eca23793dcaf933c4dace4127de710698b7a4cDarren Krahn                for (Location location : mLocations) {
61c8eca23793dcaf933c4dace4127de710698b7a4cDarren Krahn                    sb.append("\n    ").append(location.toUserReadableString());
62c8eca23793dcaf933c4dace4127de710698b7a4cDarren Krahn                }
63c8eca23793dcaf933c4dace4127de710698b7a4cDarren Krahn            } else {
64c8eca23793dcaf933c4dace4127de710698b7a4cDarren Krahn                sb.append("\n    Location: ").append(mLocations.get(0).toUserReadableString());
65c8eca23793dcaf933c4dace4127de710698b7a4cDarren Krahn            }
6669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        }
6769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn        return sb.toString();
6869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn    }
6969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn}
7069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn