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