replicant-vendor_cmsdk/host/migration/src/ReadCommand.java

77 lines
2.5 KiB
Java

/*
* Copyright (C) 2015 The CyanogenMod Project
*
* 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.
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
/**
* Created by adnan on 11/17/15.
*/
public class ReadCommand extends Command {
private String targetFile;
private ArrayList<Setting> targetList;
private String targetUri;
protected ReadCommand(String targetFile, String targetUri, ArrayList<Setting> targetList) {
this.targetFile = targetFile;
this.targetUri = targetUri;
this.targetList = targetList;
}
@Override
public void run() {
System.out.println("\nReading settings for authority "
+ getAuthority() + " for target uri " + targetUri + " from file "
+ targetFile +"...");
read(targetFile, targetUri, targetList);
synchronized (this) {
notifyAll();
}
}
private void read(String fileName, String uri, ArrayList<Setting> arrayList) {
try {
BufferedReader in = new BufferedReader(
new FileReader(fileName));
String line;
//Skip first two lines of header
for (int i = 0; i < 2; i++) {
in.readLine();
}
while ((line = in.readLine()) != null) {
if (!line.startsWith("Row: ")) {
throw new IOException("Unable to read settings");
}
if (MigrationTest.DEBUG) {
System.out.println("LINE: " + line);
}
Setting setting = RowParser.parseAndPopulate(false, line);
//Sanitize
if (filter(uri, setting)) {
continue;
}
arrayList.add(setting);
}
in.close();
} catch (IOException e) {
System.err.println("Error ");
e.printStackTrace();
}
}
}