public abstract class AbstractComponentKM extends OdiKM implements IKnowledgeModule
IKnowledgeModule.KMType, IKnowledgeModule.LKMType, IKnowledgeModule.ProcessingType| Modifier and Type | Field and Description | 
|---|---|
static java.lang.String | 
SUBTYPE_ALL_LINES
Deprecated. 
 
A subtype value that will pull in all lines defined by the KM, regardless of the subtype
 of each line. 
 | 
static java.lang.String | 
SUBTYPE_UNDEFINED
A subtype value that indicates that the KM generator delegate AST-producing method is not defined. 
 | 
NAME_MAX_LENGTHINTG_TYPE_CONTROL_APPEND, INTG_TYPE_INCREMENTAL_UPDATE, INTG_TYPE_INTERMEDIATE_COMPONENT, INTG_TYPE_NONE, INTG_TYPE_SCD, LOCAL_VARIABLES_GROOVY_SCRIPT| Modifier and Type | Method and Description | 
|---|---|
void | 
addClassDeclarationText(java.lang.String text)
Appends some text to the class declaration text. 
 | 
OdiKMTemplateJoin | 
addOdiKMTemplate(OdiKMTemplate odiKMTemplate)
Adds the {link OdiKMTemplate}'s reference to this  
AbstractComponentKM. | 
void | 
addOdiKMTemplateList(java.util.List odiKMTemplateList)
Adds the list of {link OdiKMTemplate}'s to this  
AbstractComponentKM. | 
IProcedureLine | 
addProcedureLine(java.lang.Class pLineClass,
                java.lang.String pName)
Adds a new procedure line to this procedure. 
 | 
IProcedureLine | 
addProcedureLine(java.lang.String pName)
Adds a new procedure line to this procedure. 
 | 
IProcedureOption | 
addProcedureOption(java.lang.String pOptionName,
                  java.lang.Enum pType,
                  java.lang.Object pDefaultValue)
Adds a procedure option to this KM. 
 | 
void | 
addVariableDefScriptText(java.lang.String text)
Appends some texts to the KM-local groovy substitution variable definition script. 
 | 
ProcedureOption | 
duplicateOption(ProcedureOption pOption)
Duplicates specified option and adds the new option to the end of list of options. 
 | 
IProcedureLine | 
findLine(java.lang.String nameText)
Finds the first KM line contained by this KM, whose name contains the
 specified text. 
 | 
java.util.List | 
getAllLines(boolean resolved)
Retrieves all the lines held by this AbstractComponentKM along with the non
 overridden lines from the base KM if any. 
 | 
java.util.List | 
getAllLines(boolean resolved,
           IProcedureLine.LineType lineType)
Retrieves all the lines held by this AbstractComponentKM along with the non
 overridden lines from the base KM if any. 
 | 
java.util.List | 
getAllOptionGroups()
Returns a List of ProcedureOptionGroup of this KM along with those of base KMs, eliminating groups with same name. 
 | 
java.util.List | 
getAllOptions()
Returns a List of ProcedureOptions containing all the options which belong to the KM and also all the options of base KM. 
 | 
java.util.List | 
getAllOptionsWithNoGroup()
Returns a List of all options from this KM and base KMs which does not belong to any group. 
 | 
java.lang.String | 
getASTClassName()
Gets the abstract syntax tree class name that is produced by this KM, if any, else null. 
 | 
AbstractComponentKM | 
getBaseComponentKM()
Returns the base component KM for this AbstractComponentKM 
 | 
java.lang.String | 
getClassDeclarationText()
Gets class declaration text. 
 | 
java.lang.String | 
getComponentType()
Returns the ComponentType of this AbstractComponentKM 
 | 
OdiTechnology | 
getDefaultSourceTechnology()
Gets the default source technology of this OdiProcedure. 
 | 
OdiTechnology | 
getDefaultTargetTechnology()
Gets the default target technology of this OdiProcedure. 
 | 
OdiIKMLine | 
getDerivedSubSelectLine()
Returns the predefined component KM line with derived subselect property
 set to true, if any, else return null. 
 | 
java.lang.String | 
getDerivedSubSelectTemplate()
Returns the derived subselect template that is defined in an IKM line
 owned by this AbstractComponentKM, if any, else return null. 
 | 
java.lang.String | 
getExpectedUpstreamASTClassName()
Returns the expected upstream AST class name 
 | 
boolean | 
getGenerateMTI()
Returns true if this EKM is set up for the generation of multi-insert
 statements. 
 | 
boolean | 
getIndExcludeExUnitBegin()  | 
boolean | 
getIndExcludeExUnitEnd()  | 
boolean | 
getIndExcludeExUnitMain()  | 
boolean | 
getIndExcludeMapBegin()  | 
boolean | 
getIndExcludeMapCleanUp()  | 
boolean | 
getIndExcludeMapEnd()  | 
java.util.List | 
getInsertionLines(java.lang.String subtype)
Returns all the lines held by this  
AbstractComponentKM that match the subtype. | 
java.lang.String | 
getIntegrationType()
Gets the integration type for this KM. 
 | 
IKnowledgeModule.KMType | 
getKMType()
Gets a string name of the KM type, e.g. 
 | 
java.lang.Class | 
getLineType()  | 
IKnowledgeModule.LKMType | 
getLKMType()
Gets the LKM type for this KM. 
 | 
java.lang.String | 
getName()
Returns the name of the procedure. 
 | 
java.util.List | 
getOdiKMTemplateList()
Returns the list of  
OdiKMTemplate's that are 
 referred by this AbstractComponentKM. | 
OdiProject | 
getOdiProject()
Returns the parent OdiProject 
 | 
ProcedureOption | 
getOption(java.lang.String pName)
Retrieves the procedure option which name is the parameter name. 
 | 
java.util.List | 
getOwnedLines()
Return all the lines that are directly owned by this AbstractComponentKM. 
 | 
java.util.List | 
getOwnedLines(IProcedureLine.LineType lineType)
Returns all the lines that are directly owned by this AbstractComponentKM, of the specified line type. 
 | 
java.util.List | 
getProcedureLines()
Gets the list of procedure lines for this KM. 
 | 
java.util.List | 
getProcedureOptions()
Gets the list of procedure options for this procedure. 
 | 
IKnowledgeModule.ProcessingType | 
getProcessingType()
Gets the intended code generation processing type for this AbstractComponentKM. 
 | 
java.lang.String | 
getProducedASTClassName()
Gets the abstract syntax tree class name that is produced by this KM, if any, else null. 
 | 
oracle.odi.domain.topology.language.OdiLanguage | 
getSourceLanguage()
Gets the source language for this KM. 
 | 
ITechnology | 
getSourceTechnology()
Gets the source technology for this KM, or null if source technology is not supported. 
 | 
java.lang.String | 
getStaticBaseClassName()
Deprecated. 
 
Use getDelegateClassName, it will return the base static delegate class name if this one doesn't have one, if enableInheritance parameter is true. 
 | 
java.lang.String | 
getSubtype()
Get the subtype value for this AbstractComponentKM, for the processing type (SOURCE/TARGET/BOTH) of this KM. 
 | 
java.lang.String | 
getSubtype(IKnowledgeModule.ProcessingType procType)
Gets the subtype of this KM, for the specified processing type. 
 | 
oracle.odi.domain.topology.language.OdiLanguage | 
getTargetLanguage()
Gets the target language for this KM. 
 | 
ITechnology | 
getTargetTechnology()
Gets the target technology for this KM. 
 | 
java.lang.String | 
getVariableDefScriptText()
Gets the KM-local groovy substitution variable definition script text. 
 | 
java.lang.String | 
getVariableDefScriptText(boolean includeBaseText)
Gets the KM-local groovy substitution variable definition script text. 
 | 
boolean | 
hasGeneratorDelegate()
Returns true if this KM has an explicit java or groovy generation delegate. 
 | 
boolean | 
is11gKM()
Returns true if this is a 11g-style KM. 
 | 
boolean | 
isBaseKMLine(OdiProcedureLine line)
Returns true if the specified line is a baseKM line 
 | 
boolean | 
isBaseOnlyKM()
Returns if this  
AbstractComponentKM is pure base KM. | 
boolean | 
isHidden()
If true, indicates that this KM is a 12.1-style KM that is not converted to the newer format, 
 and if seeded, it should not be visible in the KM tree. 
 | 
boolean | 
isMultiConnectIKM()
Returns true if this is a IKM and supports multiConnection 
 | 
boolean | 
isMultiConnectLKM()
Returns true if this is a LKM and supports multiConnection 
 | 
boolean | 
isProcedureLine(OdiProcedureLine line)
Returns true if the specified line is a procedure line or a baseKM line 
 | 
boolean | 
isSeeded()
Return true if this KM is a shipped, seeded 12c (or later) KM. 
 | 
boolean | 
isSourceSupported()
Return true if this KM allows source technology and language to be set and retrieved. 
 | 
boolean | 
isTransparentLKM()
Returns true if this KM is a transparent LKM
 Transparent means LKM can access to source/target attributes as if local 
 | 
void | 
moveLineAfter(ComponentKMLine pSource,
             ComponentKMLine pAfter)
Moves the given OdiProcedureLine after the line specified. 
 | 
void | 
moveLineBefore(ComponentKMLine pSource,
              ComponentKMLine pBefore)
Moves the given Procedure Moves the given OdiProcedureLine before the
 line specified. 
 | 
void | 
moveLineToBottom(ComponentKMLine pLine)
Moves the given OdiProcedureLine to the bottom of the list of lines. 
 | 
void | 
moveLineToTop(ComponentKMLine pLine)
Moves the given OdiProcedureLine to the top of the list of lines. 
 | 
ComponentKMLine | 
overrideLine(ComponentKMLine line)
Overrides the specified base KM line by copying the line into this KM, and remove
 the existing reference line, if any. 
 | 
OdiKMTemplateJoin | 
removeOdiKMTemplate(OdiKMTemplate odiKMTemplate)
Removes the {link OdiKMTemplate}'s reference from this  
AbstractComponentKM. | 
void | 
removeProcedureLine(IProcedureLine line)
Removes an existing procedure line. 
 | 
void | 
setBaseComponentKM(AbstractComponentKM base)
Sets the base component KM for this AbstractComponentKM 
 | 
void | 
setClassDeclarationText(java.lang.String text)
Sets class declaration text 
 | 
void | 
setComponentType(java.lang.String compType)
Sets the ComponentType for this AbstractComponentKM 
 | 
void | 
setDefaultsFromBaseKM()
Sets this AbstractComponentKM's flags's value (MultiConnectionSupported, LKMType and GenerateMTI), from its base KM. 
 | 
void | 
setDefaultSourceTechnology(OdiTechnology pTechnology)
Sets the default source technology of this OdiProcedure. 
 | 
void | 
setExpectedUpstreamASTClassName(java.lang.String className)
Sets the expected upstream AST class name 
 | 
void | 
setGenerateMTI(boolean pGenerateMTI)
Sets the flag to indicate whether this EKM is set up for the generation of
 multi-insert statements. 
 | 
void | 
setIndExcludeExUnitBegin(boolean value)
set IndExcludeExUnitBegin flag for Abstract ComponentKM 
 | 
void | 
setIndExcludeExUnitEnd(boolean value)
set IndExcludeExUnitEnd flag for Abstract ComponentKM 
 | 
void | 
setIndExcludeExUnitMain(boolean value)
set IndExcludeExUnitMain flag for Abstract ComponentKM 
 | 
void | 
setIndExcludeMapBegin(boolean value)
set IndExcludeMapBegin flag for Abstract ComponentKM 
 | 
void | 
setIndExcludeMapCleanUp(boolean value)
set IndExcludeMapCleanUp flag for Abstract ComponentKM 
 | 
void | 
setIndExcludeMapEnd(boolean value)
set IndExcludeMapEnd flag for Abstract ComponentKM 
 | 
void | 
setIntegrationType(java.lang.String type)
Sets the integration type for this KM. 
 | 
void | 
setLKMType(IKnowledgeModule.LKMType type)
Sets the LKM type for this KM. 
 | 
void | 
setMultiConnectionSupported(boolean pMultiConnectionSupported)
Defines whether this OdiProcedure supports mulitConnection or not. 
 | 
void | 
setProcessingType(IKnowledgeModule.ProcessingType type)
Sets the intended code generation processing type for this AbstractComponentKM. 
 | 
void | 
setProducedASTClassName(java.lang.String name)
Sets the abstract syntax tree class name, that is produced by this KM 
 | 
void | 
setSourceLanguage(oracle.odi.domain.topology.language.OdiLanguage sourceLanguage)
Sets source language for this AbstractComponentKM 
 | 
void | 
setSourceTechnology(ITechnology techno)
Sets the source technology for this KM 
 | 
void | 
setSubtype(IKnowledgeModule.ProcessingType processingType,
          java.lang.String subtype)
Set the subtype for this KM, for the specified processing type. 
 | 
void | 
setSubtype(java.lang.String subtype)
Set the value of the subtype field for this KM. 
 | 
void | 
setTargetLanguage(oracle.odi.domain.topology.language.OdiLanguage targetLanguage)
Sets target language for this AbstractComponentKM 
 | 
void | 
setTargetTechnology(ITechnology techno)
Sets the target technology for this KM 
 | 
void | 
setVariableDefScriptText(java.lang.String text)
Sets the KM-local groovy substitution variable definition script text. 
 | 
getChecksum, getCustomizationStatus, getKMBuildNumber, getProject, isDefaultKM, isGlobal, isInstanceLevelSecurityNeeded, isSetBasedOperatorSupported, setChecksum, setDefaultKM, setKMBuildNumber, setProject, setSetBasedOperatorSupported, toStringaddLine, addLine, addLine, addLine, addOption, addOption, addOptionGroup, addProcedureOption, dumpLineOrder, duplicateLine, getDescription, getFlexFieldsValues, getInternalId, getLines, getOptionGroup, getOptionGroups, getOptionNames, getOptions, getOptionsWithNoGroup, getProcedureId, getProcedureOption, getTopLevelLines, initFlexFields, isMultiConnectionSupported, moveGroupAfterGroup, moveGroupBeforeGroup, moveOptionAfter, moveOptionBefore, moveOptionToBottom, moveOptionToTop, removeLine, removeOption, removeOptionGroup, setDefaultTargetTechnology, setDescription, setNamegetFirstDate, getFirstUser, getInternalVersion, getLastDate, getLastUser, isNew, preCommitequals, getBigNumericId, getGlobalId, getNumericId, getParent, hashCodeaddProcedureOption, getDescription, getProcedureOption, isMultiConnectionSupportedaddOptionGroup, addProcedureOption, getOptionGroupgetBigNumericId, getGlobalId, getNumericIdgetFirstDate, getFirstUser, getLastDate, getLastUsergetGlobalId, getParentpublic static final java.lang.String SUBTYPE_ALL_LINES
public static final java.lang.String SUBTYPE_UNDEFINED
public void setDefaultsFromBaseKM()
public void setBaseComponentKM(AbstractComponentKM base)
base - public OdiProject getOdiProject()
public java.lang.String getComponentType()
public void setComponentType(java.lang.String compType)
compType - public boolean isSeeded()
OdiKMpublic boolean isHidden()
public void setIndExcludeMapBegin(boolean value)
value - public boolean getIndExcludeMapBegin()
public void setIndExcludeExUnitBegin(boolean value)
value - public boolean getIndExcludeExUnitBegin()
public void setIndExcludeExUnitMain(boolean value)
value - public boolean getIndExcludeExUnitMain()
public void setIndExcludeExUnitEnd(boolean value)
value - public boolean getIndExcludeExUnitEnd()
public void setIndExcludeMapEnd(boolean value)
value - public boolean getIndExcludeMapEnd()
public void setIndExcludeMapCleanUp(boolean value)
value - public boolean getIndExcludeMapCleanUp()
public AbstractComponentKM getBaseComponentKM()
public java.lang.String getStaticBaseClassName()
public void setProducedASTClassName(java.lang.String name)
name - public java.lang.String getProducedASTClassName()
IKnowledgeModulegetProducedASTClassName in interface IKnowledgeModulegetProducedASTClassName in class OdiKMpublic void setExpectedUpstreamASTClassName(java.lang.String className)
name - public java.lang.String getExpectedUpstreamASTClassName()
public void setSubtype(java.lang.String subtype)
subtype - The new subtype field value to be set.public void setSubtype(IKnowledgeModule.ProcessingType processingType, java.lang.String subtype)
processingType - The processing type (SOURCE or TARGET) for which to set the subtype.subtype - The subtype to set.public java.lang.String getSubtype()
public java.lang.String getSubtype(IKnowledgeModule.ProcessingType procType)
procType - public void setLKMType(IKnowledgeModule.LKMType type)
type - public IKnowledgeModule.LKMType getLKMType()
getLKMType in interface IKnowledgeModulepublic void setProcessingType(IKnowledgeModule.ProcessingType type)
type - the processing typepublic IKnowledgeModule.ProcessingType getProcessingType()
getProcessingType in interface IKnowledgeModulepublic java.lang.String getIntegrationType()
getIntegrationType in interface IKnowledgeModulepublic void setIntegrationType(java.lang.String type)
type - the integration type for this KMpublic java.lang.String getASTClassName()
public void setVariableDefScriptText(java.lang.String text)
text - public void addVariableDefScriptText(java.lang.String text)
text - public java.lang.String getVariableDefScriptText(boolean includeBaseText)
includeBaseText - If true, include any base KM variable definition script text as well.public java.lang.String getVariableDefScriptText()
public java.lang.String getClassDeclarationText()
public void addClassDeclarationText(java.lang.String text)
text - public void setClassDeclarationText(java.lang.String text)
text - public ITechnology getTargetTechnology()
public void setTargetTechnology(ITechnology techno)
techno - public ITechnology getSourceTechnology()
public void setMultiConnectionSupported(boolean pMultiConnectionSupported)
OdiProcedureSetting this will affect source technology. If set to false, source technology will be set to null.
setMultiConnectionSupported in class OdiProcedurepMultiConnectionSupported - true to make this procedure
        supports mutliConnection, false otherwiseOdiProcedure.isMultiConnectionSupported()public OdiTechnology getDefaultSourceTechnology()
OdiProceduregetDefaultSourceTechnology in class OdiProcedureOdiProcedure.setDefaultSourceTechnology(oracle.odi.domain.topology.OdiTechnology)public boolean isSourceSupported()
public OdiTechnology getDefaultTargetTechnology()
OdiProceduregetDefaultTargetTechnology in class OdiProcedureOdiProcedure.setDefaultTargetTechnology(oracle.odi.domain.topology.OdiTechnology)public ProcedureOption duplicateOption(ProcedureOption pOption)
OdiProcedureduplicateOption in class OdiProcedurepOption - option to duplicatepublic void setSourceTechnology(ITechnology techno)
techno - public void setDefaultSourceTechnology(OdiTechnology pTechnology)
OdiProcedureMainly used inside ODI Studio when creating commands.
 By default this property is set to null.
 
setDefaultSourceTechnology in class OdiProcedurepTechnology - the default source technologyOdiProcedure.getDefaultSourceTechnology()public boolean getGenerateMTI()
public void setGenerateMTI(boolean pGenerateMTI)
pGenerateMTI - public java.util.List getInsertionLines(java.lang.String subtype)
                                 throws oracle.odi.mapping.generation.GenerationException
AbstractComponentKM that match the subtype.
 This also includes the lines that match the subtype from the base KM if any.subtype - - the subtype of the linesoracle.odi.mapping.generation.GenerationExceptionpublic java.util.List getAllLines(boolean resolved)
resolved - public java.util.List getAllLines(boolean resolved,
                                  IProcedureLine.LineType lineType)
resolved - lineType - If non-null, then return only lines of the specified line type.public java.util.List getOwnedLines()
public java.util.List getOwnedLines(IProcedureLine.LineType lineType)
lineType - The type to match.public java.util.List getProcedureLines()
IKnowledgeModulegetProcedureLines in interface IKnowledgeModulepublic IProcedureLine findLine(java.lang.String nameText)
nameText - The text to look for in the KM line names.public ProcedureOption getOption(java.lang.String pName)
getOption in class OdiProcedurepName - the name of the optionOdiProcedure.addOption(ProcedureOption)public IKnowledgeModule.KMType getKMType()
IKnowledgeModulegetKMType in interface IKnowledgeModulepublic java.lang.String getName()
OdiProceduregetName in interface IFlexFieldUsergetName in interface IModelObjectgetName in interface IOdiEntitygetName in class OdiProcedureOdiProcedure.setName(String)public java.util.List getProcedureOptions()
IProceduregetProcedureOptions in interface IKnowledgeModulegetProcedureOptions in interface IProceduregetProcedureOptions in class OdiProcedurepublic java.util.List getAllOptions()
public IProcedureOption addProcedureOption(java.lang.String pOptionName, java.lang.Enum pType, java.lang.Object pDefaultValue)
IKnowledgeModuleaddProcedureOption in interface IKnowledgeModulepOptionName - The name of the new option.pType - The type of the new option.pDefaultValue - The default value for the new option.public boolean isMultiConnectIKM()
true if this is a IKM AND supports mutliConnection,
         false otherwisepublic boolean isMultiConnectLKM()
true if this is a LKM AND supports mutliConnection,
         false otherwisepublic boolean isProcedureLine(OdiProcedureLine line)
isProcedureLine in class OdiProcedureline - The line to check.public boolean isBaseKMLine(OdiProcedureLine line)
public boolean isTransparentLKM()
public boolean hasGeneratorDelegate()
                             throws oracle.odi.mapping.generation.GenerationException
oracle.odi.mapping.generation.GenerationExceptionpublic OdiIKMLine getDerivedSubSelectLine()
public java.lang.String getDerivedSubSelectTemplate()
public java.lang.Class getLineType()
getLineType in class OdiProcedurepublic boolean is11gKM()
public java.util.List getAllOptionGroups()
public java.util.List getAllOptionsWithNoGroup()
public oracle.odi.domain.topology.language.OdiLanguage getSourceLanguage()
getSourceLanguage in interface IKnowledgeModulegetSourceLanguage in class OdiKMpublic void setSourceLanguage(oracle.odi.domain.topology.language.OdiLanguage sourceLanguage)
The - source language.DomainRuntimeException - if sourceLanguage is null or if source technology is not set.public oracle.odi.domain.topology.language.OdiLanguage getTargetLanguage()
getTargetLanguage in interface IKnowledgeModulegetTargetLanguage in class OdiKMpublic boolean isBaseOnlyKM()
AbstractComponentKM is pure base KM.
 A KM is a pure base KM if its Processing Type is NONE, and it is a Component KM.
 A pure base KM is not capable of producing any AST object.
 It can be a LKM, CKM, IKM, or XKM.public java.util.List getOdiKMTemplateList()
OdiKMTemplate's that are 
 referred by this AbstractComponentKM.OdiKMTemplatespublic OdiKMTemplateJoin removeOdiKMTemplate(OdiKMTemplate odiKMTemplate)
AbstractComponentKM.odiKMTemplate - the KM template to be removedpublic OdiKMTemplateJoin addOdiKMTemplate(OdiKMTemplate odiKMTemplate)
AbstractComponentKM.odiKMTemplate - the KM template to be addedpublic void addOdiKMTemplateList(java.util.List odiKMTemplateList)
AbstractComponentKM.odiKMTemplateList - the list of KM templates to be addedpublic void setTargetLanguage(oracle.odi.domain.topology.language.OdiLanguage targetLanguage)
target - language.DomainRuntimeException - if targetLanguage is null or if target technology is not set.public ComponentKMLine overrideLine(ComponentKMLine line)
line - The base KM line.   Can be a reference line or a base KM line.
 If the specified line is not an already included base line, then do nothing and return null.public IProcedureLine addProcedureLine(java.lang.String pName)
IProcedureaddProcedureLine in interface IProcedureaddProcedureLine in class OdiProcedurepName - the name for the new procedure line.public IProcedureLine addProcedureLine(java.lang.Class pLineClass, java.lang.String pName)
IProcedureaddProcedureLine in interface IProcedureaddProcedureLine in class OdiProcedurepLineClass - The class type of the new line.pName - the name of the new line.public void removeProcedureLine(IProcedureLine line)
IProcedureremoveProcedureLine in interface IProcedureremoveProcedureLine in class OdiProcedureline - the line to be removed.public void moveLineAfter(ComponentKMLine pSource, ComponentKMLine pAfter)
OdiProceduremoveLineAfter in class OdiProcedurepSource - source linepAfter - move source line after this linepublic void moveLineBefore(ComponentKMLine pSource, ComponentKMLine pBefore)
OdiProceduremoveLineBefore in class OdiProcedurepSource - source linepBefore - move source line before this linepublic void moveLineToBottom(ComponentKMLine pLine)
OdiProceduremoveLineToBottom in class OdiProcedurepLine - line to movepublic void moveLineToTop(ComponentKMLine pLine)
OdiProceduremoveLineToTop in class OdiProcedurepLine - line to move