/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
package tdb.cmdline;
import java.io.File;
import jena.cmd.CmdArgModule;
import jena.cmd.CmdException;
import jena.cmd.CmdGeneral;
import org.apache.jena.tdb.base.file.Location ;
import arq.cmdline.ModAssembler;
/** Extends ModAssembler to include --tdb.
* Defaulting to "tdb.ttl" is done in ModTDBDataset because it interacts
* with --location
*/
public class ModTDBAssembler extends ModAssembler
{
private ModLocation modLocation = new ModLocation() ;
public static final String defaultAssemblerFile = "tdb.ttl" ;
protected boolean useDefaultAssemblerFile = false ;
public ModTDBAssembler()
{
super() ;
ModAssembler.assemblerDescDecl.addName("tdb") ;
}
@Override
public void processArgs(CmdArgModule cmdLine)
{
int count = 0 ;
modLocation.processArgs(cmdLine) ;
super.processArgs(cmdLine) ;
if ( super.getAssemblerFile() != null ) count++ ;
if ( modLocation.getLocation() != null ) count++ ;
if ( count == 0 )
{
useDefaultAssemblerFile = true ;
// throw new CmdException("No assembler file and no location") ;
}
if ( count > 1 )
throw new CmdException("Only one of an assembler file and a location") ;
}
@Override
public void registerWith(CmdGeneral cmdLine)
{
super.registerWith(cmdLine) ;
cmdLine.addModule(modLocation) ;
//cmdLine.getUsage().startCategory("Dataset") ;
cmdLine.getUsage().addUsage("--tdb=", "Assembler description file") ;
}
public Location getLocation() { return modLocation.getLocation() ; }
@Override
public String getAssemblerFile()
{
if ( useDefaultAssemblerFile )
{
File f = new File(defaultAssemblerFile) ;
if ( f.exists() )
return defaultAssemblerFile ;
}
return super.getAssemblerFile() ;
}
}