/** | |
******************************************************************************** | |
* Copyright (c) 2017-2020 Robert Bosch GmbH and others. | |
* | |
* This program and the accompanying materials are made | |
* available under the terms of the Eclipse Public License 2.0 | |
* which is available at https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* Robert Bosch GmbH - initial API and implementation | |
******************************************************************************** | |
*/ | |
package org.eclipse.app4mc.sca2amalthea.exporter.locks; | |
import java.io.BufferedReader; | |
import java.io.File; | |
import java.io.FileReader; | |
import java.io.IOException; | |
import java.util.ArrayList; | |
import java.util.List; | |
import org.eclipse.app4mc.sca.logging.manager.Logmanager; | |
import org.eclipse.app4mc.sca2amalthea.exporter.Activator; | |
import org.eclipse.app4mc.sca2amalthea.exporter.locks.LockFunction.LockType; | |
/** | |
* This class contains a list of lock defintions. These defintions are read from a given csv file. | |
*/ | |
public class LockDefinition { | |
private final File lockDefinitionFile; | |
private final List<LockFunction> lockFunctions; | |
/** | |
* Constructor. The csv file path must be given for later parsing of the lock definitions | |
* | |
* @param lockDefinitionFilePath {@link File} | |
*/ | |
public LockDefinition(final String lockDefinitionFilePath) { | |
super(); | |
this.lockDefinitionFile = new File(lockDefinitionFilePath); | |
this.lockFunctions = new ArrayList<LockFunction>(); | |
} | |
/** | |
* Parses the csv file that contains the locking funtion defintions | |
*/ | |
public void readLockDefinitionFromFile() { | |
try { | |
BufferedReader inFileBuffer = new BufferedReader(new FileReader(this.lockDefinitionFile)); | |
String line; | |
while ((line = inFileBuffer.readLine()) != null) { | |
if (line.startsWith("#")) { | |
continue; | |
} | |
String[] csvLineArray = line.split(","); | |
parseCsvLineArray(csvLineArray); | |
} | |
inFileBuffer.close(); | |
} | |
catch (IOException e) { | |
Logmanager.getInstance().logException(this.getClass(), e, Activator.PLUGIN_ID); | |
} | |
} | |
/** | |
* @return the lockDefinitionFile | |
*/ | |
public File getLockDefinitionFile() { | |
return this.lockDefinitionFile; | |
} | |
/** | |
* @return the lockFunctions | |
*/ | |
public List<LockFunction> getLockFunctions() { | |
return this.lockFunctions; | |
} | |
private void parseCsvLineArray(final String[] csvLineArray) { | |
if (csvLineArray.length > 2) { | |
String lockName = csvLineArray[0]; | |
String getLock = csvLineArray[1]; | |
String releaseLock = csvLineArray[2]; | |
String lockTypeStr = LockType.SPIN_LOCK.name(); | |
if (csvLineArray.length > 3) { | |
lockTypeStr = csvLineArray[3]; | |
} | |
this.lockFunctions.add(new LockFunction(lockName, getLock, releaseLock, LockType.valueOf(lockTypeStr))); | |
} | |
} | |
} |