Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ca11246

Browse files
implement open worksheet with code to call utPLSQL for selected path
unit test not yet automatically executed, default worksheet naming
1 parent 018df7b commit ca11246

4 files changed

Lines changed: 69 additions & 11 deletions

File tree

sqldev/pom.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,20 @@
116116
<scope>system</scope>
117117
<systemPath>${sqldev.basedir}/ide/lib/dbapi.jar</systemPath>
118118
</dependency>
119+
<dependency>
120+
<groupId>oracle</groupId>
121+
<artifactId>oracle.ide.db</artifactId>
122+
<version>12.2.1</version>
123+
<scope>system</scope>
124+
<systemPath>${sqldev.basedir}/ide/extensions/oracle.ide.db.jar</systemPath>
125+
</dependency>
126+
<dependency>
127+
<groupId>oracle</groupId>
128+
<artifactId>oracle.jdeveloper.db.connection</artifactId>
129+
<version>12.2.1</version>
130+
<scope>system</scope>
131+
<systemPath>${sqldev.basedir}/jdev/extensions/oracle.jdeveloper.db.connection.jar</systemPath>
132+
</dependency>
119133
<!-- SQL Developer specific dependencies part 2 (available in public maven repositories) -->
120134
<dependency>
121135
<!-- SQL Developer is using this older version -->
@@ -388,10 +402,12 @@
388402
</_exportcontents>
389403
<Require-Bundle>
390404
oracle.javatools-nodeps,
405+
oracle.jdeveloper.db.connection,
391406
oracle.idert,
392407
oracle.ide,
393408
oracle.ide.db,
394409
oracle.sqldeveloper,
410+
oracle.sqldeveloper.worksheet,
395411
oracle.uic
396412
</Require-Bundle>
397413
<Import-Package>!*</Import-Package>

sqldev/src/main/java/org/utplsql/sqldev/editor/menu/UtplsqlEditorController.xtend

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,38 @@ package org.utplsql.sqldev.editor.menu
1616

1717
import java.util.logging.Logger
1818
import javax.swing.JEditorPane
19+
import oracle.dbtools.raptor.navigator.impl.DatabaseSourceNode
20+
import oracle.dbtools.raptor.utils.Connections
21+
import oracle.dbtools.worksheet.editor.OpenWorksheetWizard
22+
import oracle.dbtools.worksheet.editor.Worksheet
1923
import oracle.ide.Context
2024
import oracle.ide.Ide
25+
import oracle.ide.config.Preferences
2126
import oracle.ide.controller.Controller
2227
import oracle.ide.controller.IdeAction
2328
import oracle.ide.editor.Editor
2429
import oracle.ide.^extension.RegisteredByExtension
30+
import oracle.ide.model.Node
31+
import org.utplsql.sqldev.model.preference.PreferenceModel
2532
import org.utplsql.sqldev.parser.UtplsqlParser
33+
import org.utplsql.sqldev.resources.UtplsqlResources
2634

2735
@RegisteredByExtension("org.utplsql.sqldev")
2836
class UtplsqlEditorController implements Controller {
2937
public static int UTLPLSQL_EDITOR_TEST_CMD_ID = Ide.findCmdID("utplsql.editor.test")
3038
private static final Logger logger = Logger.getLogger(UtplsqlEditorController.name);
31-
39+
3240
override handleEvent(IdeAction action, Context context) {
3341
if (action.commandId === UTLPLSQL_EDITOR_TEST_CMD_ID) {
34-
runTest(context)
42+
val Runnable runnable = [|runTest(context)]
43+
val thread = new Thread(runnable)
44+
thread.name = "utPLSQL run test"
45+
thread.start
3546
return true
3647
}
3748
return false
3849
}
39-
50+
4051
override update(IdeAction action, Context context) {
4152
if (action.commandId === UTLPLSQL_EDITOR_TEST_CMD_ID) {
4253
action.enabled = false
@@ -54,20 +65,50 @@ class UtplsqlEditorController implements Controller {
5465
}
5566
return false
5667
}
57-
68+
5869
def runTest(Context context) {
5970
logger.fine("Start utPLSQL test from editor.")
71+
logger.fine('''context.view is of type «context.view.class.name».''')
72+
logger.fine('''context.node is of type «context.node.class.name».''')
6073
val view = context.view
6174
if (view instanceof Editor) {
6275
val component = view.defaultFocusComponent
6376
if (component instanceof JEditorPane) {
6477
val parser = new UtplsqlParser(component.text)
6578
val position = component.caretPosition
66-
// TODO: open new worksheet and call utPLSQL
79+
var String connectionName = null;
80+
val Node node = context.node
81+
if (node instanceof DatabaseSourceNode) {
82+
connectionName = node.connectionName
83+
} else if (view instanceof Worksheet) {
84+
connectionName = view.connectionName
85+
}
86+
val preferences = PreferenceModel.getInstance(Preferences.getPreferences());
87+
if (connectionName !== null && preferences.unsharedWorksheet) {
88+
connectionName = Connections.instance.createPrivateConnection(connectionName)
89+
}
90+
val code = '''
91+
SET SERVEROUTPUT ON SIZE 1000000
92+
«IF preferences.resetPackage»
93+
BEGIN
94+
dbms_session.reset_package;
95+
END;
96+
/
97+
«ENDIF»
98+
BEGIN
99+
ut.run('«parser.getPathAt(position)»');
100+
END;
101+
/
102+
'''
103+
val worksheet = OpenWorksheetWizard.openNewTempWorksheet(connectionName, code) as Worksheet
104+
if (connectionName === null) {
105+
worksheet.comboConnection = null
106+
}
107+
// TODO make update Title work
108+
worksheet.updateTitle(UtplsqlResources.getString("WORKSHEET_TITLE"))
109+
// TODO exeucte code in worksheet when preferences.autoExecute
67110
logger.fine('''Cursor is at «position». Calling «parser.getPathAt(position)»''')
68111
}
69112
}
70-
logger.fine ("utPLSQL test started successfully.")
71113
}
72-
73114
}

sqldev/src/main/java/org/utplsql/sqldev/parser/UtplsqlParser.xtend

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ class UtplsqlParser {
103103
return name
104104
}
105105

106-
private def removeQuotes(String name) {
107-
return name.replace("\"", "")
106+
private def fixName(String name) {
107+
return name.replace("\"", "").replace(";", "")
108108
}
109109

110110
def getObjects() {
@@ -126,9 +126,9 @@ class UtplsqlParser {
126126
if (!objectName.empty) {
127127
var unitName = getUnitNameAt(position)
128128
if (unitName.empty) {
129-
return objectName.removeQuotes
129+
return objectName.fixName
130130
} else {
131-
return '''«objectName.removeQuotes».«unitName.removeQuotes»'''
131+
return '''«objectName.fixName».«unitName.fixName»'''
132132
}
133133
}
134134
return ""

sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ PREF_RESET_PACKAGE_LABEL=Reset package before running utPLSQL?
1313
PREF_AUTO_EXECUTE_LABEL=Execute unit test automatically?
1414
PREF_UNSHARED_WORKSHEET_LABEL=Open an unshared worksheet for utPLSQL execution?
1515
MENU_RUN_TEST_LABEL=Run utPLSQL test
16+
WORKSHEET_TITLE=utPLSQL

0 commit comments

Comments
 (0)