Simsar SQL Şablon Dosyasının Uyarlanması

Top  Previous  Next

Eğer henüz veritabanınız için uygun bir Simsar SQL Şablon dosyası mevcut değil ise (Bakınız Simsar SQL Şablon Dosyaları), veya tablo yapısında faklılıklar istiyorsanız kendi bsp dosyanızı geliştirebilirsiniz.

Adımlar:

1.Projenizde Sunucu Dosya Tipinde aşağıdaki adımları izleyerek yeni bir dizin oluşturun
Proje Kaşifinde Site ikonuna sağ tıklayın, bağlamsal menüden "Yeni Dizin..." seçeneğini seçin.
Sunucu Dosya Tipleri onay kutusunu işaretleyin ve karma kutudan "Simsar SQL Şablonu" nu seçin.
[Tamam] düğmesine basın.
Proje Kaşifinde yeni oluşturduğunuz "Simsar SQL Şablonu" dizinine sağ tıklayıp bağlamsal menüden "Kabuk | Dizini Aç..." ı seçin. "bsp" dosyamızı bu dizin altında oluşturacağız.

 

2.Örnek olarak var olan bir "bsp" dosyasını kopyalayınız.
{KURULUM_DİZİNİ}\lib\sys\moremotion\ROOT\WEB-INF\MM-INF\config\security\bsp  dizinine gidin.
Bu dizin altındaki, örneğin "mysql.bsp" dosyasını kopyalayıp, projenizdeki "bsp" dizini altına yapıştırın.
Kopyalanmış dosyanın adını mutlaka değiştirin: Örneğin "new.bsp".
Tekrar projenize dönün, proje kaşifindeki "Simsar SQL Şablonu" dizinine sağ tıklayın, bağlamsal menüden "Dosya Dahil Et..." seçeneğini seçin.
Gelen diyalog üzerinde "new.bsp" dosyasını işaretleyip [OK] düğmesine basın.

InsertBSP

3."securitybrokers" dosyasında yeni Simsar Tanımını oluşturun.
Yeni simsar tanımı sadece güncel proje için geçerli olacaksa doğrudan "Proje | Güvenlik Simsarı Tanımlarını Düzenle..." menüsünü kullanabilirsiniz. Bu durumda Application Studio  {KURULUM_DİZİNİ}\ib\sys\moremotion\ROOT\WEB-INF\MM-INF\config\securitybrokers.xml dosyasını {PROJE_DİZİNİ} altına kopyalayacak ve düzenlemek üzere o dosyayı açacaktır.
 
Eğer simsar tanımının tüm projeler için geçerli olmasını istiyorsanız {KURULUM_DİZİNİ}\ib\sys\moremotion\ROOT\WEB-INF\MM-INF\config\securitybrokers.xml dosyasını bir metin editörü ile yeni tanımı onun üzerinde yapın.
Bir tanım bloğunu kopyalayın ve aşağıdaki gibi değiştirin.

 

 

<securityBroker name="YeniMySQLSimsarim">

  <class>org.moremotion.mmcomp.security.RelDBSecurityBroker</class>

  <rootUserName>sa</rootUserName>

  <adminRoleName>SYS_ADM</adminRoleName>

  <param name="sqlPatternFile">new.bsp</param>

  <param name="debug">false</param>

</securityBroker>

 

 

4.Projeye ekli durumdaki "new.bsp" dosyasını bir metin editörü ile açıp, SQL Şablonlarını ihtiyaçlarınıza göre değiştirin.
Not: SQL Şablonlarında yapılan her değişiklikten sonra web sunucusunun kapatılıp tekrar açılması gerekir.
5.SecurityDomain elemanının "Güvenlik Simsarı" özelliğinde yeni güvenlik simsarını seçin.
6.Projenizin index sayfasına Login elemanı yerleştirip projenizi derleyiniz.
7.Projenizi derledikten sonra {DERLEME_DİZİNİ}\ROOT\WEB-INF\MM-INF\config\security\bsp dizinini kontrol ediniz. Yeni oluşturduğunuz new.bsp dosyasının bu dizin altında yer aldığından emin olun.
8.Sonrasında web sunucusunu çalıştırıp index sayfasına ulaştığınızda bileşen için gerekli tablolar veritabanınızda oluşmuş olacaktır. Tabloları oluşturma işlemi bir defalığına gerçekleştirilir. Sorun olduğunda; veritabanında bu bileşenin çalışması için gerekli tabloları silip işlemi tekrarlayın.

 

 

bsp Dosyasındaki SQL Şablonlarını Değiştirme

SQL Şablonlarının amaçları; şablonların adlarına bakarak net bir şekilde anlaşılabilir. İlave kullanıcı bilgileri eklemek veya başka amaçlar için kolaylıkla üzerlerinde değişiklikler yapılabilir. Yine de bazı noktalardan bahsetmek faydalı olacaktır.

Güvenlik tablolarının varlığının kontrolü

 

#Check Tables

{

  SHOW TABLES LIKE 'users';

}

 

Bu "#Check Tables" şablonu içinde verilmiş olan SQL, ilk çağrılışta, güvenlik simsarı tarafından güvenlik bilgilerini saklayan tabloların mevcut olup olmadığını kontrol etmek için kullanılır. Eğer burada tanımlanmış olan SQL sorgusu işletildiğinde, içinde en az bir kayıt olan bir sonuç kümesi döndürürse; güvenlik tablolarının var olduğu var sayılır. Aksi taktirde güvenlik simsarı "#Create Tables" şablonunda tanımlanmış olan SQL sorgusunu işleterek, gerekli tabloların ve başlangıç bilgisinin oluşturulmasını sağlayacaktır.

Otomatik Artan Kayıt Numaraları veya Sıralama Tabloları

Veritabanı sistemlerin çoğunluğu, değeri otomatik olarak arttırılan kayıt numarası alanlarını destekler. Ancak bazıları ise desteklemez. Örnek: Oracle veritabanı. Oracle veritabanı bunun yerine; sıralama nesneleri kullanır. Aşağıda, iki veritabanı sistemi için farklı yapılandırılmış olan "#Insert CheckPoint" şablonlarını inceleyin.

 

MySQL Veritabanı İçin;

 

#Insert CheckPoint

{

  INSERT INTO cps (NAME, DESCR)

    VALUES('@{cpname}', '@{cpdescr}')

}

 

 

Oracle Veritabanı İçin;

 

#Insert CheckPoint

{

  INSERT INTO scott.cps (ID, NAME, DESCR)

    VALUES( scott.cps_id_seq.NEXTVAL, '@{cpname}', '@{cpdescr}')

}

 

 

İlave Kullanıcı Bilgileri Sağlamak

Eğer güvenlik sisteminizin kullanıcıları için ilave bilgiler saklamak ve yönetmek istiyorsanız; aşağıdaki SQL şablonlarını güncellemeniz gerekir.

1."#Create Tables" SQL (CREATE TABLE users SQL ifadesi)
2."#Fill In Initial Data" SQL (INSERT INTO users SQL ifadesi)
3."#Update User" SQL
4."#Insert User" SQL
5."#Get User Info By Name" SQL
6."#Get User Info By Email" SQL
7."#Get All Users" SQL
8."#Search Users" SQL

 

Örnek:

'BOLUM' adlı yeni bir kullanıcı bilgisi sağlamak istediğimizi varsayalım. SQL Şablonlarının güncellenmiş halleri aşağıdaki gibi olmalıdır:

 

#Create Tables

{

  ...

  ...

  CREATE TABLE users (

    ID int(11) NOT NULL auto_increment,

    NAME varchar(50) NOT NULL default '',

    PASSWORD varchar(50) NOT NULL default '',

    FULLNAME varchar(80) NOT NULL default '',

    EMAIL varchar(128) NOT NULL default '',

    DISABLED varchar(5) NOT NULL default '',

    BOLUM int(8) default 0,

    PRIMARY KEY (ID),

    KEY NAME (NAME)

  );

  ...

}

 

#Fill In Initial Data

{

  ...

  INSERT INTO users (NAME, PASSWORD, FULLNAME, BOLUM

    VALUES('sa', '6D81B7AA5F5C76AC475E', 'System Administrator', 0);

  ...

}

 

#Update User

{

  UPDATE users SET

    PASSWORD = '@{password}',

    FULLNAME = '@{fullname}',

    EMAIL    = '@{email}',

    DISABLED = '@{disabled}',

    BOLUM    = @{BOLUM}

  WHERE NAME = '@{username}'

}

 

#Insert User

{

  INSERT INTO users

    (NAME, PASSWORD, FULLNAME, EMAIL, DISABLED, BOLUM)

    VALUES('@{username}', '@{password}', '@{fullname}', '@{email}', '@{disabled}', @{BOLUM})

}

 

#Get User Info By Name

{

  SELECT ID AS ID, NAME AS NAME, PASSWORD AS PASSWORD, FULLNAME AS FULLNAME,

         EMAIL AS EMAIL, DISABLED AS DISABLED, BOLUM

    FROM users WHERE NAME = '@{username}'

}

 

#Get User Info By Email

{

  SELECT ID AS ID, NAME AS NAME, PASSWORD AS PASSWORD, FULLNAME AS FULLNAME,

         EMAIL AS EMAIL, DISABLED AS DISABLED, BOLUM

    FROM users WHERE EMAIL = '@{email}'

}

 

#Get All Users

{

  SELECT ID AS ID, NAME AS NAME, PASSWORD AS PASSWORD, FULLNAME AS FULLNAME,

         EMAIL AS EMAIL, DISABLED AS DISABLED, BOLUM

    FROM users

}

 

#Search Users

{

  SELECT ID AS ID, NAME AS NAME, PASSWORD AS PASSWORD, FULLNAME AS FULLNAME, 

         EMAIL AS EMAIL, DISABLED AS DISABLED, BOLUM

    FROM users

    WHERE

      (NAME     = '' OR NAME     LIKE '%@{username}%') AND

      (FULLNAME = '' OR FULLNAME LIKE '%@{fullname}%') AND

      (EMAIL    = '' OR EMAIL    LIKE '%@{email}%'   ) AND

      (DISABLED = '' OR DISABLED LIKE '%@{disabled}%') AND

      (BOLUM    = '' OR BOLUM    =    '@{BOLUM}')

}

 

Not: SQL Şablonlarında yapılan her değişiklikten sonra projenizi derlemeyi unutmayın.