1731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar/*
2731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar * Copyright (C) 2015 The Android Open Source Project
3731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar *
4731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License");
5731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar * you may not use this file except in compliance with the License.
6731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar * You may obtain a copy of the License at
7731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar *
8731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar *      http://www.apache.org/licenses/LICENSE-2.0
9731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar *
10731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar * Unless required by applicable law or agreed to in writing, software
11731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS,
12731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar * See the License for the specific language governing permissions and
14731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar * limitations under the License.
15731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar */
16731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
17731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyarpackage android.databinding.tool.processing;
18731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
19731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyarimport android.databinding.tool.store.Location;
204ba16229a40e9758db86d4fb1df5119fdcb8aa2aDeepanshu Guptaimport android.databinding.tool.util.StringUtils;
21731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
22731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyarimport java.util.List;
23731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
24731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyarpublic class ScopedErrorReport {
25731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
26731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    private final String mFilePath;
27731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
28731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    private final List<Location> mLocations;
29731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
30731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    /**
31731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar     * Only created by Scope
32731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar     */
33731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    ScopedErrorReport(String filePath, List<Location> locations) {
34731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        mFilePath = filePath;
35731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        mLocations = locations;
36731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    }
37731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
38731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    public String getFilePath() {
39731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        return mFilePath;
40731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    }
41731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
42731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    public List<Location> getLocations() {
43731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        return mLocations;
44731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    }
45731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
46731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    public boolean isValid() {
47731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        return StringUtils.isNotBlank(mFilePath);
48731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    }
49731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar
50731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    public String toUserReadableString() {
51731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        StringBuilder sb = new StringBuilder();
52731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        if (mFilePath != null) {
53731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar            sb.append("File:");
54731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar            sb.append(mFilePath);
55731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        }
56731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        if (mLocations != null && mLocations.size() > 0) {
57731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar            if (mLocations.size() > 1) {
58731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar                sb.append("Locations:");
59731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar                for (Location location : mLocations) {
60731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar                    sb.append("\n    ").append(location.toUserReadableString());
61731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar                }
62731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar            } else {
63731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar                sb.append("\n    Location: ").append(mLocations.get(0).toUserReadableString());
64731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar            }
65731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        }
66731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar        return sb.toString();
67731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar    }
68731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar}
69