/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.tools.textimport.ui.wizards;
import org.teiid.designer.core.validation.rules.StringNameValidator;
/**
* @since 8.0
*/
public abstract class AbstractRowObject implements IRowObject {
private static final StringNameValidator nameValidator = new StringNameValidator();
private String rawString;
private String dataString;
private String name;
private String location;
private String description;
public int type;
private boolean valid = false;
/**
*
* @since 4.2
*/
public AbstractRowObject(String row) {
super();
this.dataString = row;
}
@Override
public abstract void parseRow();
protected String parseDescription(String subString) {
// Remove unneeded double quotes
// Walk char by char
StringBuffer buffer = new StringBuffer();
boolean removedFirstDQuote = false;
boolean addChar = false;
int length = subString.length();
for(int i=0; i<length; i++ ) {
// check i and i+1 for dquotes
if( i < length-2 && subString.charAt(i) == (DQUOTE) ) {
if(removedFirstDQuote) {
if( subString.charAt(i+1) == (DQUOTE))
addChar = false;
else
addChar = true;
} else {
// skip the first dQuote
removedFirstDQuote = true;
}
} else if( subString.charAt(i) == (DQUOTE) && i == length-1) {
addChar = false;
} else {
addChar = true;
}
if( addChar )
buffer.append(subString.charAt(i));
}
return buffer.toString();
}
@Override
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append("Relational Row Object") //$NON-NLS-1$
.append("\n Name = " + name ) //$NON-NLS-1$
.append("\n Description = " + description); //$NON-NLS-1$
return buffer.toString();
}
@Override
public boolean isValid() {
return this.valid;
}
@Override
public String getDescription() {
return this.description;
}
@Override
public void setDescription(String desc) {
this.description = desc;
}
@Override
public String getName() {
return this.name;
}
@Override
public void setName(String name) {
this.name = createValidName(name, true);
}
@Override
public String getLocation() {
return this.location;
}
public void setLocation(String location) {
this.location = location;
}
@Override
public int getObjectType() {
return this.type;
}
public void setObjectType(int type) {
this.type = type;
}
@Override
public String getDataString() {
return this.dataString;
}
@Override
public String getRawString() {
return this.rawString;
}
@Override
public void setRawString(String rawString) {
this.rawString = rawString;
}
public String createValidName(String input, boolean performValidityCheck) {
String validName = nameValidator.createValidName(input, performValidityCheck);
if( validName != null )
return validName;
return input;
}
}