Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

GEODI farklı veri kaynaklarından içerik sağlamak için IContentReaderEnumarator interface gerçekleyen sınıflardan faydalanır.

Gerçekleme Geriye IGeodiContent'leri dönmelidir. Hazır IGeodiContent gerçeklemelerinden yararlanılabilir veya GeodiContentBase'den türeyen sınıf yazılabilir.

ContentType değeri GEODI tarafından tanınmayan yeni bir tip oluşturulmuşsa ContentReaderBase gerçeklemeside yapılmalıdır. Bir Viewer yoksa WebContentViewerBase gerçeklemesi yapılabilir. Viewer Zorunlu değildir.

Gerçeklemeler Proje hazırlama ekranında görüntülenir. Her gerçekleme için kendine özel düzenleme ekranı eklenebilir. Hiç bir parametreye ihtiyaç duymayan gerçekleme için düzenleme ekranı zorunlu değildir.

Image Removed

Enumarator gerçeklemelerinin görevi progressbar üzerinde yüzde gösterilebilmesi için kaç içerik döneceğini bildirmek ve içerikleri göndermektir. Kaç içerik döneceğini bildirmesi opsiyolendir. 

Bir enumarator hazırlamak için Geodi.CoreV1.ContentReaderEnumaratorBase abstract sınıfını gerçekleten sınıf yazılmalıdır. Bu abstract sınıf sürümlerde gerekecek optimizasyonlardan etkilenmemek için oluşturulmuş bir IContentReaderEnumarator gerçeklemesidiruses classes that implement the IContentReaderEnumarator interface to provide content from different data sources.

Implementation must return IGeodiContents. Ready-made IGeodiContent implementations can be used or a class derived from GeodiContentBase can be written.

ContentReaderBase implementation should also be performed if a new type is created that is not recognized by GEODI. If a Viewer is not available, WebContentViewerBase can be implemented. Viewer is not mandatory.


The implementations are displayed on the project preparation screen. A custom edit screen can be added for each rendering. The editing screen is not mandatory for implementation that does not require any parameters.

Image Added


The task of enumarator implementations is to tell how many content is returned and send the content so that the percentage can be displayed on the progressbar. It is optional to tell you how many content to return.

To prepare an enumarator, the class that implements the Geodi.CoreV1.ContentReaderEnumaratorBase abstract class must be written. This is an IContentReaderEnumarator implementation created to avoid being affected by the optimizations required in abstract class versions.


Code Block
languagec#
titleÖrnek Gerçekleme
//Kendi tanım ekranında verilecek dosyaya erişim sağlayan bir gerçekleme örneğidir.
//Rest api altyapısı public tüm özelliklerin html üzerinden erişimine olanak tanır.
 
//WebEditor enumarator ekleme sırasında istenilen ek bilgilerin alınması için sağlanacak kullanıcı arayüzünü belirtmekte kullanılır. html dosyası GUI üzerinde bir klasöre atılmalıdır. Paketleme,Modül olarak gerçekleme için editörü farklı konuma atma olanaklarıda mevcuttur.
//GUI/WebEditor üzerinde açık kod WebEditör örnekleri mevcuttur.
 [WebEditorAtttribute("GUI/WebEditor/MyContentReaderEnumarator/Default.view.html")]
    public class MyContentReaderEnumarator : ContentReaderEnumaratorBase
    {
        public MyContentReaderEnumarator()
        {

			//Proje hazırlama ekranındaki önceliği. Büyük değer daha ön sırada gösterilir.
            //this.Priority = 0;
			//icons klasöründe yer alan ikonlardan herhangi biri, boş bırakılırsa bilinmeyen ikonu görüntülenir.
            this.IconName = "Layer/building"; 
			//Görüntü adı [$Resx:Key] ile bir Globalization dizini altındaki Resx dosyasıla bağlanarak veya [$.en:Sample;tr:Örnek] söz dizimi ile çoklu dil desteği kullanılabilir.
            this.DisplayName = "Sample Enumarator"; 
        }

        public string MyFile {get;set;}


		/*
		property/member alanlar clonable olmayan referans tipler içeriyorsa Clone metodunda bir kopyası alınmalıdır. https://decesw.atlassian.net/wiki/display/GEODI/GEODI+Developer 
        public override IContentReaderEnumarator Clone()
        {
            MyContentReaderEnumarator rtn = base.Clone() as MyContentReaderEnumarator ;
            rtn.RefrenceValue=new MyReferenceType();
            return rtn;
        }*/

		//opsiyonel bir metoddur, bir bilgi ayarlamasının arayüzlerde duyrum gösterme dışında etkisi yoktur.
        public override void FillStatusIfPossible(StatusItem status)
        {
			if(string.IsNullOrEmpty(this.MyFile) && File.Exist(this.MyFile))
				status.PercentStatus.AddCount(1);
        }

      
        public override void Collect(GeodiEnumaratorScopeArgs Args)
        {
			if(string.IsNullOrEmpty(this.MyFile) && File.Exist(this.MyFile))
            {
				//FileContent GEODI tarafından Readerlara iletilebilen bir içerik referansıdır. Bir GeodiContentBase gerçeklemesidir. 
				//GeodiContentBase gerçeklemleri indexleme için içeriğe nasıl dönüleceğini tarifleyen sınıflardır. 
				//Hazırda WebSiteContent, FolderContent, EmailContent ,MemoryStringContent gibi genel gerçeklemeler bulunmaktadır.
				//Genel gerçeklemelerin yetmediği durumlarda özel bir gerçekleme, reader ve viewer sınıflarının hazırlanması gerekebilir.
				 FileContent content = new FileContent(this.MyFile, null)
                    {
                        Enumarator = this,
                    };
		         Args.CollecttorMethod(content, Args);
            }
        }
    }

...