8000 implement open worksheet with code to call utPLSQL for selected path · marcusgram/utPLSQL-SQLDeveloper@ca11246 · GitHub
[go: up one dir, main page]

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

File tree

4 files changed

+69
-11
lines changed

4 files changed

+69
-11
lines changed

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)
0