plugins/db.mysql.editors/windows/wrapper/MySQLTableEditorWrapper.h (170 lines of code) (raw):

/* * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2.0, * as published by the Free Software Foundation. * * This program is designed to work with certain software (including * but not limited to OpenSSL) that is licensed under separate terms, as * designated in a particular file or component or in included license * documentation. The authors of MySQL hereby grant you an additional * permission to link the program and your derivative works with the * separately licensed software that they have either included with * the program or referenced in the documentation. * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * the GNU General Public License, version 2.0, for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #pragma once #include "mysql_table_editor.h" #include "grt.h" #include "GrtTemplates.h" using namespace MySQL::Grt; using namespace System; using namespace System::Windows::Forms; using namespace System::Collections::Generic; namespace MySQL { namespace Grt { namespace Db { ref class MySQLTableEditorWrapper; public ref class MySQLTableColumnsListWrapper : public Db::TableColumnsListWrapper { public: enum class MySQLColumnListColumns { Name = bec::TableColumnsListBE::Name, Type = bec::TableColumnsListBE::Type, IsPK = bec::TableColumnsListBE::IsPK, IsNotNull = bec::TableColumnsListBE::IsNotNull, IsUnique = bec::TableColumnsListBE::IsUnique, IsBinary = bec::TableColumnsListBE::IsBinary, IsUnsigned = bec::TableColumnsListBE::IsUnsigned, IsZerofill = bec::TableColumnsListBE::IsZerofill, Flags = bec::TableColumnsListBE::Flags, Default = bec::TableColumnsListBE::Default, CharsetCollation = bec::TableColumnsListBE::CharsetCollation, Charset = bec::TableColumnsListBE::Charset, Collation = bec::TableColumnsListBE::Collation, HasCharset = bec::TableColumnsListBE::HasCharset, Comment = bec::TableColumnsListBE::Comment, IsAutoIncrement = ::MySQLTableColumnsListBE::IsAutoIncrement, IsAutoIncrementable = ::MySQLTableColumnsListBE::IsAutoIncrementable, IsGenerated = MySQLTableColumnsListBE::IsGenerated, GeneratedExpression = MySQLTableColumnsListBE::GeneratedExpression, GeneratedStorageType = MySQLTableColumnsListBE::GeneratedStorageType, }; MySQLTableColumnsListWrapper(::MySQLTableColumnsListBE *inn); inline ::MySQLTableColumnsListBE *get_unmanaged_object() { return static_cast<::MySQLTableColumnsListBE *>(inner); } bool set_column_type(NodeIdWrapper ^ nodeid, GrtValue ^ value) { return get_unmanaged_object()->set_column_type(*nodeid->get_unmanaged_object(), GrtObjectRef::cast_from(value->get_unmanaged_object())); } List<String ^> ^ get_datatype_flags(NodeIdWrapper ^ nodeid) { return CppStringListToNative(get_unmanaged_object()->get_datatype_flags(*nodeid->get_unmanaged_object())); } void set_column_flag(NodeIdWrapper ^ nodeid, String ^ flag_name, int is_set) { get_unmanaged_object()->set_column_flag(*nodeid->get_unmanaged_object(), NativeToCppString(flag_name), is_set); } int get_column_flag(NodeIdWrapper ^ nodeid, String ^ flag_name) { return get_unmanaged_object()->get_column_flag(*nodeid->get_unmanaged_object(), NativeToCppString(flag_name)); } }; public ref class MySQLIndexListWrapper : public Db::IndexListWrapper { public: MySQLIndexListWrapper(::MySQLTableIndexListBE *inner) : Db::IndexListWrapper(inner) { } enum class Columns { Name = ::MySQLTableIndexListBE::IndexListBE::IndexListColumns::Name, Type = ::MySQLTableIndexListBE::IndexListBE::IndexListColumns::Type, Visible = ::MySQLTableIndexListBE::IndexListBE::IndexListColumns::Visible, StorageType = ::MySQLTableIndexListBE::StorageType, RowBlockSize = ::MySQLTableIndexListBE::RowBlockSize, Parser = ::MySQLTableIndexListBE::Parser, }; }; public ref class MySQLTablePartitionTreeWrapper : public TreeModelWrapper { public: MySQLTablePartitionTreeWrapper(::MySQLTablePartitionTreeBE *inner) : TreeModelWrapper(inner) { } enum class Columns { Name = ::MySQLTablePartitionTreeBE::Name, Value = ::MySQLTablePartitionTreeBE::Value, MinRows = ::MySQLTablePartitionTreeBE::MinRows, MaxRows = ::MySQLTablePartitionTreeBE::MaxRows, DataDirectory = ::MySQLTablePartitionTreeBE::DataDirectory, IndexDirectory = ::MySQLTablePartitionTreeBE::IndexDirectory, Comment = ::MySQLTablePartitionTreeBE::Comment }; }; public ref class MySQLTableEditorWrapper : public Db::TableEditorWrapper { public: enum class PartialRefreshes { RefreshColumnList = bec::TableEditorBE::RefreshColumnList, RefreshColumnCollation = bec::TableEditorBE::RefreshColumnCollation, }; MySQLTableEditorWrapper(GrtValue ^ arglist); virtual ~MySQLTableEditorWrapper(); ::MySQLTableEditorBE *get_unmanaged_object() { return static_cast<::MySQLTableEditorBE *>(inner); } virtual MySQLTableColumnsListWrapper ^ get_columns(); void set_table_option_by_name(System::String ^ name, System::String ^ value) { get_unmanaged_object()->set_table_option_by_name(NativeToCppString(name), NativeToCppString(value)); } List<String ^> ^ get_engines_list() { return CppStringListToNative(get_unmanaged_object()->get_engines_list()); } List<String ^> ^ get_index_storage_types() { return CppStringListToNative(get_unmanaged_object()->get_index_storage_types()); } List<String ^> ^ get_fk_action_options() { return CppStringListToNative(get_unmanaged_object()->get_fk_action_options()); } bool engine_supports_foreign_keys() { return get_unmanaged_object()->engine_supports_foreign_keys(); } String ^ MySQLTableEditorWrapper::get_table_option_by_name(String ^ name) { return CppStringToNative(get_unmanaged_object()->get_table_option_by_name(NativeToCppString(name))); } void set_sql(String ^ sql) { get_unmanaged_object()->set_sql(NativeToCppString(sql)); } Control ^ get_trigger_panel(); void commit_changes(); bool set_partition_type(String ^ type) { return get_unmanaged_object()->set_partition_type(NativeToCppString(type)); } String ^ get_partition_type() { return CppStringToNative(get_unmanaged_object()->get_partition_type()); } void set_partition_expression(String ^ expr) { get_unmanaged_object()->set_partition_expression(NativeToCppString(expr)); } String ^ get_partition_expression() { return CppStringToNative(get_unmanaged_object()->get_partition_expression()); } void set_partition_count(int count) { get_unmanaged_object()->set_partition_count(count); } int get_partition_count() { return get_unmanaged_object()->get_partition_count(); } bool set_subpartition_type(String ^ type) { return get_unmanaged_object()->set_subpartition_type(NativeToCppString(type)); } String ^ get_subpartition_type() { return CppStringToNative(get_unmanaged_object()->get_subpartition_type()); } bool set_subpartition_expression(String ^ expr) { return get_unmanaged_object()->set_subpartition_expression(NativeToCppString(expr)); } String ^ get_subpartition_expression() { return CppStringToNative(get_unmanaged_object()->get_subpartition_expression()); } void set_subpartition_count(int count) { get_unmanaged_object()->set_subpartition_count(count); } int get_subpartition_count() { return get_unmanaged_object()->get_subpartition_count(); } MySQLTablePartitionTreeWrapper ^ get_partitions(); // Whether partitions and sub partitions will be defined by the user or not . // If false, only count is needed otherwise the partitions list must be defined. void set_explicit_partitions(bool flag) { get_unmanaged_object()->set_explicit_partitions(flag); } void set_explicit_subpartitions(bool flag) { get_unmanaged_object()->set_explicit_subpartitions(flag); } bool get_explicit_partitions() { return get_unmanaged_object()->get_explicit_partitions(); } bool get_explicit_subpartitions() { return get_unmanaged_object()->get_explicit_subpartitions(); } bool is_server_version_at_least(int major, int minor, int release); void load_trigger_sql(); }; }; // namespace Db }; // namespace Grt }; // namespace MySQL